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

假设索引对您没有任何意义,并且您想创建一个新的数据框,其中列 AB 被连接:

mydf=pd.concat([test_df[0]['A'],test_df[0]['B']], axis=1, keys=['A','B'])

现在,我可以在 for 循环中使用这一行吗?该循环会遍历我的数据帧字典中的所有键?

如果不是,那么另一种方法是什么?结果将是一个包含两列的数据框,AB,以及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']] 时,它会从您的数据框中选择列AB,因此列表推导会创建一个数据框列表,其中AB 从每个数据帧的顺序与原始数据帧中的顺序相同。所以是的,它不应该。

以上是关于Pandas:迭代连接存储在数据框字典中的列的主要内容,如果未能解决你的问题,请参考以下文章

迭代 Pandas Dataframe 中的列和行

如何迭代熊猫数据框的列以运行回归

Python Pandas 创建一长串要连接的数据框

用 Pandas 数据框中的行填充嵌套字典

迭代 4 个 pandas 数据框列并将它们存储到 4 个列表中,其中一个 for 循环而不是 4 个 for 循环

Pandas FutureWarning:字符的列迭代将在未来版本中被弃用