【问题标题】:How to reindex columns in two pandas dataframes so that they both have the same columns?如何重新索引两个熊猫数据框中的列,以使它们都具有相同的列?
【发布时间】:2021-03-26 08:04:09
【问题描述】:

我有两个数据框

df1
>>>
   a  b
0  1  4
1  2  5
2  3  6

df2
>>>
   a  c
0  9  8
1  0  1
2  0  0

我想做的是在每个数据框中创建不重叠的列并用零填充它们。所以,因为df1 不包含来自df2 的列c,并且df2 不包含来自df1 的列b,最终结果将是

df1
>>>
   a  b  c
0  1  4  0
1  2  5  0
2  3  6  0

df2
>>>
   a  c  b
0  9  8  0
1  0  1  0
2  0  0  0

实现这一目标的最佳方法是什么?

我尝试过使用reindexreindex_like,但前者似乎只重新索引行而不是列,我不知道使用什么参数来重新索引列

df1.reindex(df2.columns, fill_value=0.)
>>>
     a    b
a  0.0  0.0
c  0.0  0.0

【问题讨论】:

    标签: python pandas reindex


    【解决方案1】:

    使用DataFrame.align:

    df1, df2 = df1.align(df2, fill_value=0)
    print (df1)
    print (df2)
       a  b  c
    0  1  4  0
    1  2  5  0
    2  3  6  0
       a  b  c
    0  9  0  8
    1  0  0  1
    2  0  0  0
    

    您的解决方案使用Index.unionDataFrame.reindex 使用axis=1 用于列:

    c = df1.columns.union(df2.columns)
    df1, df2 = df1.reindex(c, fill_value=0, axis=1), df2.reindex(c, fill_value=0, axis=1)
    print (df1)
    print (df2)
       a  b  c
    0  1  4  0
    1  2  5  0
    2  3  6  0
       a  b  c
    0  9  0  8
    1  0  0  1
    2  0  0  0
    

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 2018-07-17
      • 2018-10-07
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多