【发布时间】:2020-07-05 10:05:22
【问题描述】:
我有一个有序的熊猫数据框列表,每个包含给定年份的数据:
yearly_data_list = [df_2000, df_2001, ... , df_2010]
这些数据框具有相同的形状,例如 R 行和 C 列,以及相同的列名和索引。
我想创建长度为len(yearly_data_list) 的 N = R*C 时间序列,为数据帧中的每个条目创建一个,并将它们放入嵌套字典中,其中最终值为列表。对于数据帧中的给定条目,对应列表的第一个值是df_2000 的条目,第二个值是df_2001 的条目,依此类推。
例如,假设我有 N=3 个数据帧,每个数据帧有 2 行 (R=2) 和 3 列 (C=3):
df_2000 = pd.DataFrame(data = [[12, 13, 14], [15, 16, 17]], columns=list('ABC'), index=list('xy'))
A B C
x 12 13 14
y 15 16 17
df_2001 = pd.DataFrame(data = [[6, 7, 8], [9, 10, 11]], columns=list('ABC'), index=list('xy'))
A B C
x 6 7 8
y 9 10 11
df_2002 = pd.DataFrame(data = [[0, 1, 2], [3, 4, 5]], columns=list('ABC'), index=list('xy'))
A B C
x 0 1 2
y 3 4 5
在这种情况下,我想获取长度为 3 的 R*C=6 列表(时间序列)并将其放入一个嵌套字典中,如下所示:
{'x': {'A': [12, 6, 0], 'B': [13, 7, 1], 'C': [14, 8, 2]},
'y': {'A': [15, 9, 3], 'B': [16, 10, 4], 'C': [17, 11, 5]}}
请注意,最外层的键来自索引,而最内层的键来自列名。
我知道使用 pd.Dataframe.T.to_dict() 我可以获得 3 个看起来像这样但包含每个数据帧的单独值而不是列表的字典。在this SO 答案中,他们合并了多个字典,但我无法使其适用于我的嵌套字典案例。
任何使用链接方法或任何其他方法的帮助,将不胜感激。谢谢
【问题讨论】: