【问题标题】:Merging / Appending data frames with unequal columns , [duplicate]合并/附加具有不相等列的数据框,[重复]
【发布时间】:2021-03-30 06:09:48
【问题描述】:

DataFrame 1(索引是一个日期

    date        Apple    Oranges ... Col100
    2020-01-01   9        10
    2002-01-02   5        12 
    ...
    2002-12-10   14       10

数据框 2

   date        Apple    Banana   Kiwi     Oranges... Col100
   2002-12-12   16       20       10        15

我想要 DataFrame 3 作为

    date        Apple    Oranges   Kiwi     Banana ..... Col100 
    2020-01-01   9        10         0         0
    2002-01-02   5        12         0         0
    ...
    2002-12-10   14       10         0         0
    2002-12-12   16       15        10        20

我试过了

df3 = df1.merge(df2, how = 'outer') 

它只是删除了我绝对需要的索引。

然后我尝试了

df3 = df1.merge(df2, how = 'outer',right_index=True, left_index=True) 

但这是创建 Apple_x, Oranges_y 列,而不是实际附加到现有的 Apple 橙子。 我在合并时无法传递列名,因为我在两个 DF 中都有 100 列。

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    尝试使用熊猫concat

    res = pd.concat([df1,df2])
    

    这将为您提供NaN 用于没有日期的列。您可以将其替换为 0 作为您的预期输出,并将列转换回 int

    res.fillna(0).astype(int)
    

    【讨论】:

    • 我怀疑res.fillna(0).astype(int) 会起作用。您正在尝试将完整的 df 转换为 int。有一个 date 列可能会失败。
    • @MayankPorwal, date 是索引。它根本不会被转换。
    • 我的错。我错过了(Index is a date)的部分。
    • 没问题!但是,如果有其他列而不是数字,它应该会失败。所以 OP 只需要更新数字列。
    • 是的,正是我的观点。感谢您的澄清。
    猜你喜欢
    • 2014-02-26
    • 2016-05-11
    • 1970-01-01
    • 2021-04-04
    • 2016-07-10
    • 2015-06-28
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多