首页 > 解决方案 > 将熊猫数据框转换为列表的字典

问题描述

我正在尝试将 3 列 pandas 数据框转换为类似{key:[{},{},{}]}

但是我真的无法弄清楚。

样本数据:

            0    1         2
0  2019-01-21  BBB  11101110
1  2019-01-21  CCC  11101010
2  2019-01-21  DDD  10101110
3  2019-01-20  BBB  11101110
4  2019-01-20  CCC  11101010
5  2019-01-20  DDD  10101110

预期数据:

[
    {'BBB': [{'2019-01-21': '11101110'}, {'2019-01-20': '11101110'}]}, 
    {'CCC': [{'2019-01-21': '11101010'}, {'2019-01-20': '11101010'}]}, 
    {'DDD': [{'2019-01-21': '10101110'}, {'2019-01-20': '10101110'}]}
]

我试过了,跟随事情,但它不起作用。

a = dict(zip(df[1], [dict(zip(df[0], df[2]))]))
print(a)
{'BBB': {'2019-01-21': '10101110', '2019-01-20': '10101110'}}

标签: pythonpython-3.xpandas

解决方案


IIUC

df['New']=[{x : y} for x,y in zip(df['0'], df['2'])]
df
            0    1         2                       New
0  2019-01-21  BBB  11101110  {'2019-01-21': 11101110}
1  2019-01-21  CCC  11101010  {'2019-01-21': 11101010}
2  2019-01-21  DDD  10101110  {'2019-01-21': 10101110}
3  2019-01-20  BBB  11101110  {'2019-01-20': 11101110}
4  2019-01-20  CCC  11101010  {'2019-01-20': 11101010}
5  2019-01-20  DDD  10101110  {'2019-01-20': 10101110}


d=df.groupby('1').New.apply(list).to_dict()
d
{'BBB': [{'2019-01-21': 11101110}, {'2019-01-20': 11101110}], 
 'CCC': [{'2019-01-21': 11101010}, {'2019-01-20': 11101010}], 
 'DDD': [{'2019-01-21': 10101110}, {'2019-01-20': 10101110}]}

如果你想要字典列表

d=[{k: v} for (k, v) in d.items()()]

推荐阅读