首页 > 解决方案 > 从充满元组列表的字典创建多个数据帧

问题描述

df = {'(5, 1.01, 0.98)': [(Timestamp('2017-08-24 22:35:00'), 
    -201.99999999999915, 19798.0), (Timestamp('2017-08-25 12:10:00'),
    -199.95980000000057, 19598.0402), (Timestamp('2017-08-26 01:35:00'),
    90.00690944516465, 19688.047109445164)], '(6, 1.04, 0.99)': [(Timestamp('2017-
    08-25 16:35:00'), -808.0000000000001, 19192.0), (Timestamp('2017-08-26 
    01:35:00'), 73.45175794973963, 19265.45175794974), (Timestamp('2017-08-26 
    03:55:00'), 85.84402466986793, 19351.295782619607), (Timestamp('2017-08-26 
    11:10:00')]}

我有两个键和多个值,它们是每个值的元组列表。如何创建一个包含 3 列相对于包含 3 个元素的元组的数据框?有可能吗?我可以为每个键创建不同的数据框吗?

亲切的问候

标签: pythonpandasdataframekey

解决方案


如果您希望以下

             0                    1           2             3
0  (5, 1.01, 0.98)  2017-08-24 22:35:00 -202.000000  19798.000000
1  (5, 1.01, 0.98)  2017-08-25 12:10:00 -199.959800  19598.040200
2  (5, 1.01, 0.98)  2017-08-26 01:35:00   90.006909  19688.047109

作为输出

{'(5, 1.01, 0.98)': [(Timestamp('2017-08-24 22:35:00'), 
-201.99999999999915, 19798.0), (Timestamp('2017-08-25 12:10:00'),
-199.95980000000057, 19598.0402), (Timestamp('2017-08-26 01:35:00'),
90.00690944516465, 19688.047109445164)]}

那么你可以使用

new_df = pd.DataFrame(data=[[k] + list(t) for k, v in df.items() for t in v])
new_df.columns = [to, whatever, you, want]

但是,如果您想拆分元组键(第一列),那么您可以修改上面的内容来做到这一点。


推荐阅读