【问题标题】:Append Two Dataframes Together (Pandas, Python3)将两个数据框附加在一起(Pandas,Python3)
【发布时间】:2014-09-25 19:46:33
【问题描述】:

我正在尝试将两个不共享任何重叠数据的不同数据帧附加/加入(?)。

DF1 的样子

  Teams        Points
  Red            2
  Green          1
  Orange         3
  Yellow         4
  ....    
  Brown          6

DF2 看起来像

  Area         Miles
   2            3
   1            2
  ....
   7            12

我正在尝试使用

将这些附加在一起
 bigdata = df1.append(df2,ignore_index = True).reset_index()

但我明白了

  Teams        Points
  Red            2
  Green          1
  Orange         3
  Yellow         4   
                    Area         Miles
                     2            3
                     1            2

我怎样才能得到这样的东西?

 Teams          Points      Area     Miles
  Red            2           2         3
  Green          1           1         2
  Orange         3
  Yellow         4

编辑:关于 Edchum 的答案,我尝试过合并和加入,但每个都创建了一些奇怪的表。而不是我正在寻找的(如上面列出的),它将返回如下内容:

 Teams          Points      Area     Miles
  Red            2           2         3
  Green          1           
  Orange         3           1         2
  Yellow         4

【问题讨论】:

  • 试试pd.concat([df1,df2], axis=1, ignore_index=True)
  • 我想你看到这个是因为你的索引不连续所以对于 df1 它可能是 0,1,2,3 但 df2 它是 0,2 你能确认是这种情况吗?我会更新我的回答
  • 好的,你要做的就是重新索引或重置索引,使它们对齐
  • 是的,刚刚做到了!工作:) 谢谢!

标签: python-3.x pandas


【解决方案1】:

使用concat 并传递参数axis=1

In [4]:

pd.concat([df1,df2], axis=1)
Out[4]:
    Teams  Points  Area  Miles
0     Red       2     2      3
1   Green       1     1      2
2  Orange       3   NaN    NaN
3  Yellow       4   NaN    NaN

join 也可以:

In [8]:

df1.join(df2)
Out[8]:
    Teams  Points  Area  Miles
0     Red       2     2      3
1   Green       1     1      2
2  Orange       3   NaN    NaN
3  Yellow       4   NaN    NaN

merge 也是如此:

In [11]:

df1.merge(df2,left_index=True, right_index=True, how='left')
Out[11]:
    Teams  Points  Area  Miles
0     Red       2     2      3
1   Green       1     1      2
2  Orange       3   NaN    NaN
3  Yellow       4   NaN    NaN

编辑 在索引不对齐的情况下,例如您的第一个 df 具有索引 [0,1,2,3] 而您的第二个 df 具有索引 [0,2] 这将意味着上述操作将自然地与第一个 df 的索引对齐,从而导致 NaN索引行1 的行。要解决此问题,您可以通过调用 reset_index() 或像这样直接分配来重新索引第二个 df:df2.index =[0,1]

【讨论】:

  • 嗨,Ed,我实际上已经尝试了这些解决方案中的每一个,并且每种解决方案都可以完成我需要的但有局限性 - 请参阅我对原始问题的更新!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多