在python pandas中的循环中将大数据框中的许多子数据框合并

沙拉德

我的程序将生成许多小的数据帧,例如下面的那些

       Column_A  Column_B
 row1         1         2

       Column_A  Column_B
 row2         3         4

       Column_C  Column_D
 row1         5         6

       Column_C  Column_D
 row2         7         8

我希望它们合并为

       Column_A  Column_B  Column_C  Column_D
 row1         1         2         5         6
 row2         3         4         7         8

当数据帧需要一次合并一个时,该怎么做。生成较小数据帧的代码是

 df = {}
 df[0] = pd.DataFrame({'Column_A' : [1], 
                       'Column_B' : [2]},
                      index = ["row1"])
 df[1] = pd.DataFrame({'Column_A' : [3],
                       'Column_B' : [4]},
                       index = ["row2"])
 df[2] = pd.DataFrame({'Column_C' : [5],
                       'Column_D' : [6]},
                      index = ["row1"]) 
 df[3] = pd.DataFrame({'Column_C' : [7],
                       'Column_D' : [8]},
                      index = ["row2"])

我尝试使用merge和concat,但是它们总是最终通过用_x,_y追加现有列或仅重复这些列来创建更多列

例如,按以下方式合并

pdf = pd.DataFrame()

for i in range(4):
    pdf = pdf.merge(pd.DataFrame(df[i], index=["row{}".format(((i)%2)+1)]), how='outer', left_index=True, right_index=True)

产生

      Column_A_x  Column_B_x  Column_A_y  Column_B_y  Column_C_x  Column_D_x  \
row1         1.0         2.0         NaN         NaN         5.0         6.0   
row2         NaN         NaN         3.0         4.0         NaN         NaN   

      Column_C_y  Column_D_y  
row1         NaN         NaN  
row2         7.0         8.0  

有人可以帮助我以正确的方式合并它吗

伊利亚·艾维拉(IljaEverilä)

如果您能以任何方式将左右两部分放在单独的容器中,那将对您有很大帮助。例如,一个列中的A和B列,另一个列中的C和D列。这样,您可以pandas.concat轻松地将它们组合在一起在这两个部分建立之后,在这种情况下,您需要使用索引合并它们。

使用您的原始df字典:

In [11]: pd.concat([df[0], df[1]]).merge(pd.concat([df[2], df[3]]), left_index=True, right_index=True)
Out[11]: 
      Column_A  Column_B  Column_C  Column_D
row1         1         2         5         6
row2         3         4         7         8

使用左右一半的容器,代码的读取效果会更好一些(并且不需要循环):

left = [pd.DataFrame({'Column_A' : [1], 
                      'Column_B' : [2]},
                     index = ["row1"]),
        pd.DataFrame({'Column_A' : [3],
                      'Column_B' : [4]},
                     index = ["row2"])]

right = [pd.DataFrame({'Column_C' : [5],
                       'Column_D' : [6]},
                      index = ["row1"]),
         pd.DataFrame({'Column_C' : [7],
                       'Column_D' : [8]},
                      index = ["row2"])]

df = pd.concat(left).merge(pd.concat(right), left_index=True, right_index=True)

最后,如果您别无选择,只能将它们存储在示例中的字典中:

from functools import reduce, partial
from itertools import groupby

pdf = reduce(
    partial(pd.merge, left_index=True, right_index=True, how='outer'),
    (pd.concat(list(g))
     for cols, g in groupby(sorted(df.values(),
                                   key=lambda df_: tuple(df_.columns)),
                            lambda df_: tuple(df_.columns)))
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:有条件地在循环中绘制数据框中许多列的数据

来自分类Dev

在While循环中刷新Python中的数据框

来自分类Dev

循环访问配对列表以合并python中的数据框行

来自分类Dev

在 Pandas/Python 中合并数据框中的列值

来自分类Dev

在python中的for循环中合并数据帧

来自分类Dev

使用python中的pandas将列表中的数据框合并为单个数据框

来自分类Dev

Python Pandas在数据框中合并相同的名称列

来自分类Dev

在Python / Pandas中串联/合并数据框并编辑列名

来自分类Dev

Python Pandas-在数据框中合并两列

来自分类Dev

Python / Pandas:如何合并数据框中的行

来自分类Dev

根据条件替换合并数据框中的 NaN --(Python,Pandas)

来自分类Dev

Python将数据框中的许多列乘以许多列

来自分类Dev

避免在熊猫数据框中循环-python

来自分类Dev

在python pandas数据框中展开行

来自分类Dev

在Python(Pandas)中重组数据框

来自分类Dev

Python:在Pandas数据框中缩放列

来自分类Dev

在Pandas / Python中合并两个数据框,使所有列均不包含数据框1

来自分类Dev

如何在Python的递归函数中合并嵌套数据框groupby循环?

来自分类Dev

Python Pandas-合并数据框行

来自分类Dev

For循环数据框python

来自分类Dev

Pandas / Python-合并键位于2个子字符串中的数据框

来自分类Dev

在python中合并数据框时出现重复的行

来自分类Dev

如何合并数据框以保持Spark或Python中的顺序

来自分类Dev

如何在Unicode中将元组的元组转换为python中的pandas数据框

来自分类Dev

在python中合并两个数据框时获取空数据框

来自分类Dev

python中的``重组''数据框

来自分类Dev

在 Python 中映射数据框

来自分类Dev

如何使用python pandas在循环中加入多个数据框

来自分类Dev

python pandas无法显示大数据框的摘要

Related 相关文章

  1. 1

    Python:有条件地在循环中绘制数据框中许多列的数据

  2. 2

    在While循环中刷新Python中的数据框

  3. 3

    循环访问配对列表以合并python中的数据框行

  4. 4

    在 Pandas/Python 中合并数据框中的列值

  5. 5

    在python中的for循环中合并数据帧

  6. 6

    使用python中的pandas将列表中的数据框合并为单个数据框

  7. 7

    Python Pandas在数据框中合并相同的名称列

  8. 8

    在Python / Pandas中串联/合并数据框并编辑列名

  9. 9

    Python Pandas-在数据框中合并两列

  10. 10

    Python / Pandas:如何合并数据框中的行

  11. 11

    根据条件替换合并数据框中的 NaN --(Python,Pandas)

  12. 12

    Python将数据框中的许多列乘以许多列

  13. 13

    避免在熊猫数据框中循环-python

  14. 14

    在python pandas数据框中展开行

  15. 15

    在Python(Pandas)中重组数据框

  16. 16

    Python:在Pandas数据框中缩放列

  17. 17

    在Pandas / Python中合并两个数据框,使所有列均不包含数据框1

  18. 18

    如何在Python的递归函数中合并嵌套数据框groupby循环?

  19. 19

    Python Pandas-合并数据框行

  20. 20

    For循环数据框python

  21. 21

    Pandas / Python-合并键位于2个子字符串中的数据框

  22. 22

    在python中合并数据框时出现重复的行

  23. 23

    如何合并数据框以保持Spark或Python中的顺序

  24. 24

    如何在Unicode中将元组的元组转换为python中的pandas数据框

  25. 25

    在python中合并两个数据框时获取空数据框

  26. 26

    python中的``重组''数据框

  27. 27

    在 Python 中映射数据框

  28. 28

    如何使用python pandas在循环中加入多个数据框

  29. 29

    python pandas无法显示大数据框的摘要

热门标签

归档