python - 从 pandas 数据帧中分离并创建字典

标签 python pandas dictionary dataframe pandas-groupby

我有一个如下的数据框,我想创建一个如下的字典:

示例:

{'52.00,20.00': [1.5,4.1,3.6,3.1], '49.25,20.00': [0.5,2.1,1,2.1]}

即{'A、B 的值':avg(A) 列表}

我是 python pandas 新手,有人可以建议吗?

+-----------+-----------+-----------------+----------------+
| A         | B         | avg(A)          | hour           |
+-----------+-----------+-----------------+----------------+
|     52.00 |     20.00 |             1.5 |              1 |
|     52.00 |     20.00 |             4.1 |             14 |
|     52.00 |     20.00 |             3.6 |             15 |
|     52.00 |     20.00 |             3.1 |             16 |
|     49.25 |     20.00 |             0.5 |              0 |
|     49.25 |     20.00 |             2.1 |              1 |
|     49.25 |     20.00 |               1 |             14 |
|     49.25 |     20.00 |             2.1 |             15 |
|     53.75 |     20.00 |            2.66 |             20 |
|     53.75 |     20.00 |            2.66 |             21 |
|     53.75 |     20.00 |            2.66 |             22 |
|     53.75 |     20.00 |            5.07 |             23 |
|     48.00 |     20.00 |            0.97 |              0 |
|     48.00 |     20.00 |            0.97 |              1 |
|     48.00 |     20.00 |            1.57 |             14 |
|     48.00 |     20.00 |            1.57 |             15 |

最佳答案

对于两列,您可以手动连接(以获得更好的性能),然后用作 groupby + apply 操作的子句。

df[['A', 'B']] = df[['A', 'B']].astype(str)
df['avg(A)'].groupby(df['A'] + ',' + df['B']).apply(list).to_dict()

{
    "48.0,20.0": [
        0.97,
        0.97,
        1.57,
        1.57
    ],
    "49.25,20.0": [
        0.5,
        2.1,
        1.0,
        2.1
    ],
    "52.0,20.0": [
        1.5,
        4.1,
        3.6,
        3.1
    ],
    "53.75,20.0": [
        2.66,
        2.66,
        2.66,
        5.07
    ]
}
<小时/>

对于多列(不仅仅是 AB),您可以将 applystr.join 结合使用> 创建一列逗号分隔的数字,该数字应概括为任意数量的列。

c = ['A', 'B', ...]
df['avg(A)'].groupby(df[c].astype(str).apply(','.join, 1)).apply(list).to_dict()

关于python - 从 pandas 数据帧中分离并创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614841/

相关文章:

python - 查找句子中代词和名词之间的关系

python - 如何通过比较两列来为 Pandas 表着色

python - 从 DataFrame 到嵌套字典

Python - 将一个复杂的文件读入字典

python - 获取列表项的名称

python - 将遥测数据添加到视频 [python]

python - 我应该把这些功能放在哪里?在 models.py 内还是在views.py 内?

python - 在 Pandas 中绘制 fill_between()

python - 仅包含 np 数组的一列上的 Pandas 相关性

python - Pandas 在数据框中保留数字列的 int 部分的方法