python-3.x - 从 Pandas 构建一个方法词典

标签 python-3.x pandas

我有一个如下所示的数据框:

    start   stop   duration
0   1       2      1
1   3       4      2
2   2       1      2
3   4       3      0

我试图用键=(开始,停止)对和值=它们持续时间的平均值来构建一个字典,不管顺序如何。换句话说,(1,2) 和 (2,1) 都算作 (1,2) 对的出现。

期望的输出:dict_avg= {(1,2):1.5, (3,4):1}

实现此目标的最佳方法是什么?

最佳答案

这是一种可能的方法,采用排序对的元组:

>>> grp = df[['start', 'stop']].apply(lambda x: tuple(sorted(x)), axis=1)
>>> df.groupby(grp)['duration'].mean().to_dict()
{(1, 2): 1.5, (3, 4): 1.0}

作为免责声明,我几乎可以保证这将比此处给出的 NumPy 排序慢得多,因为在 .apply() 中使用了 lambda(并且需要使用 sorted() + tuple() constructor) 在 Python 空间中进行每次调用,而不是像理想情况下通过 Pandas 那样在 Cython/C 中完成/NumPy。

关于python-3.x - 从 Pandas 构建一个方法词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638031/

相关文章:

python - NewRandomAccessFile 无法创建/打开;注意_OCR

python - pip 安装 libxml2 失败

python - 使用 python matplotlib 和 metpy 添加辅助 y 轴

python - 我们如何将函数应用于 pandas 和 python 中的整个组?

python - 如何制作一个包含来自另一个 DataFrame 的一半数据的 DataFrame,并均匀分布在列中的值中?

python - 使用多线程加速 Pandas 数据帧的创建

python - Dask + Pandas : Returning a sequence of conditional dummies

python - pd.to_datetime 或解析日期时间不适用于我的 csv 文件(格式 : dd/mm/yyyy, hh:mm:ss)

python - 正则表达式 : Preceding token is not quantifiable

python - Qt 和 opencv 应用程序无法在虚拟环境中运行