【问题标题】:Concat dataframes row wised and merge rows if exsistConcat数据帧逐行并合并行(如果存在)
【发布时间】:2020-03-19 13:26:44
【问题描述】:

我有两个数据框:

Df_1:

  A  B  C  D   
1 10 nan 20 30
2 20 30 20 10

Df_2:

  A  B 
1 10 40
2 30 70

我想合并它们并拥有这个最终数据框。

  A  B  C  D
1 10 40 20 30
2 20 30 20 10
3 30 70 nan nan

我该怎么做?

【问题讨论】:

  • Pandas Merging 101的可能重复
  • 您能否详细描述一下您希望如何合并行?例如,如果 df_2 = [[10 40] [10 30]] 会有什么结果?如果 df_2 = [[nan 40] [30 70] [nan 30]] ?合并行的规则是什么?

标签: python pandas dataframe


【解决方案1】:

看预期的结果,我想,Df_2第二行的索引 应该是 3(而不是 2)。

运行Df_1.combine_first(Df_2)

结果是:

      A     B     C     D
1  10.0  40.0  20.0  30.0
2  20.0  30.0  20.0  10.0
3  30.0  70.0   NaN   NaN

即由于可能的 NaN 值,列的类型被强制为 float

但是,如果您愿意,您可以通过应用 to_numeric 来尽可能还原它:

Df_1.combine_first(Df_2).apply(pd.to_numeric, downcast='integer')

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2022-01-01
    • 2020-05-24
    • 1970-01-01
    相关资源
    最近更新 更多