【问题标题】:In Pandas, how would I combine 2 DataFrames with unique columns?在 Pandas 中,我如何将 2 个 DataFrames 与唯一列结合起来?
【发布时间】:2020-05-07 04:53:33
【问题描述】:

我正在使用一些 DataFrame。一个是从较新的 csv 中提取,添加了列和持续的日期。但是,大多数列是相同的。我想将它们结合起来,以获得一个包含所有日期和所有列的 DataFrame?

csv 类似于这些,有一些相同的列和一些不同的列,但所有日期都是唯一的:

df1:
day     alice  bob
8/11    0      0
8/25    2      5
9/1     2      0

df2:
day     alice  charlie
9/12    1      1
9/25    2      3
9/1     2      1

生成的dataFrame应该是这样的,一列日期和所有列都存在(我可以稍后将NaN转换为fillna,我只需要知道如何组合):


df3: 
day     alice  bob  charlie
8/11    0      0      0 
8/25    2      5      0 
9/1     2      0      0
9/12    1      0      1
9/25    2      0      3
9/1     2      0      1

当我将我的实际 2 个 DataFrames 与 pd.concat 结合时,我收到以下错误:

AssertionError: Number of manager items must equal union of block items
# manager items: 65, # tot_items: 66

不确定可能是什么问题。同时,谢谢,你真棒:)

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

你可以使用concat:

pd.concat((df1,df2), sort=False).fillna(0)

    day  alice  bob  charlie
0  8/11      0  0.0      0.0
1  8/25      2  5.0      0.0
2   9/1      2  0.0      0.0
0  9/12      1  0.0      1.0
1  9/25      2  0.0      3.0
2   9/1      2  0.0      1.0

【讨论】:

  • 在我的实际数据帧上,我得到 AssertionError:管理器项目的数量必须等于块项目的联合#管理器项目:65,#tot_items:66
  • 这必须发生在代码中的其他地方,否则您的数据看起来与示例数据不同:-)。
  • 它与样本数据不同(它是敏感的)。但是结构是一样的。一些相同的列、一些新的列和持续的日期。
  • 第二点见this answer
猜你喜欢
  • 2021-07-07
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2015-12-03
  • 2017-05-27
  • 1970-01-01
相关资源
最近更新 更多