Pandas:迭代连接存储在数据框字典中的列
Posted
技术标签:
【中文标题】Pandas:迭代连接存储在数据框字典中的列【英文标题】:Pandas: iteratively concatenate columns stored in a dictionary of dataframes 【发布时间】:2017-04-01 04:15:36 【问题描述】:假设我有一个包含 pandas
数据帧的字典,其中键是 0, 1, 2, ..., 999
,值是这样的数据帧 (test_df
):
A B C
0 1.438161 -0.210454 -1.983704
1 -0.283780 -0.371773 0.017580
2 0.552564 -0.610548 0.257276
3 1.931332 0.649179 -1.349062
4 1.656010 -1.373263 1.333079
5 0.944862 -0.657849 1.526811
假设索引对您没有任何意义,并且您想创建一个新的数据框,其中列 A
和 B
被连接:
mydf=pd.concat([test_df[0]['A'],test_df[0]['B']], axis=1, keys=['A','B'])
现在,我可以在 for 循环中使用这一行吗?该循环会遍历我的数据帧字典中的所有键?
如果不是,那么另一种方法是什么?结果将是一个包含两列的数据框,A
和B
,以及6x1000
行。因此,索引列将从0
变为5999
。
【问题讨论】:
【参考方案1】:如果df_dic
是你的字典,你可以这样做:
pd.concat([df[['A', 'B']] for df in df_dic.values()]).reset_index(drop=True)
如果df_dic
包含两个键值对,结果如下所示:
【讨论】:
请放心:我认为我不会失去 A-to-B 配对,对吗? 当您执行df[['A', 'B']]
时,它会从您的数据框中选择列A
和B
,因此列表推导会创建一个数据框列表,其中A
和B
从每个数据帧的顺序与原始数据帧中的顺序相同。所以是的,它不应该。以上是关于Pandas:迭代连接存储在数据框字典中的列的主要内容,如果未能解决你的问题,请参考以下文章