python - 将 Pandas 数据框转换为字典

标签 python pandas dictionary dataframe

我有一个 Pandas 日期框:

+-----------+-------+---------+
| kpi_name  | coeff | measure |
+-----------+-------+---------+
| messi     | 2     | DoD     |
| ronaldo   | 1.5   | MTD     |
| del_piero | 2     | MTD     |
+-----------+-------+---------+

我需要将其转换为字典,例如:

{'MTD':[{'KPI':'ronaldo', 'measure':'1.5'}, {'KPI:':'messi', 'measure':'2'],
 'DoD':['KPI':'messi', 'measure':'1.4']}

我正在尝试:

a = df.groupby('measure').apply(lambda x: x.to_dict('list')).to_dict() 

我的输出:

{'MTD': {'kpi_name': ['ronaldo', 'del_piero'], 'coeff': [1.5, 2.0], 'measure': ['MTD', 'MTD']}, 'DoD': {'kpi_name': ['messi'], 'coeff': [2.0], 'measure': ['DoD']}}

谢谢大家的帮助!

最佳答案

请查看slicing dataframestranspose T 供将来引用。

给定一个数据框

df = pd.DataFrame({'KPI':['messi', 'ronaldo', 'del_piero'],\
                   'coeff':[2, 1.5, 2], \
                   'measure':['DoD', 'MTD', 'MTD']})

您可以使用以下 lambda 函数

df.groupby('measure').apply(lambda x: list(x[['KPI','coeff']].T.to_dict().values())).to_dict()

达到预期的输出

{'DoD': [{'KPI': 'messi', 'coeff': 2.0}],
 'MTD': [{'KPI': 'ronaldo', 'coeff': 1.5}, {'KPI': 'del_piero', 'coeff': 2.0}]}

关于python - 将 Pandas 数据框转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52797652/

相关文章:

python - 多线程Python退出

python - doctest 在省略号后忽略行的前面

python - 对图像应用滤镜,使它们看起来像是从更远的地方拍摄的

python - 将 tf-idf 值添加为矩阵中的列

python - 命名文件输出moviepy ffmpeg

date - 从带破折号的字符串解析 Pandas 列到日期

c# - 调用存储在字典中的方法

ios - Swift 字典包含值但未打印在调试器控制台上

python - 稀疏数据的高效差异直方图

c++ - QML map : Large amount of displayed items