【问题标题】:Python - Merge Dataframes / Append on ColumnPython - 合并数据框/追加到列上
【发布时间】:2021-06-30 20:46:43
【问题描述】:

我有以下格式的数据:

df1:

date1 animal animal cages sold
1/1/19 10:00:00 dog 3
1/1/19 11:00:00 horse 6
1/5/19 11:00:00 ferret 5
1/12/19 10:00:00 bird 2
1/12/19 11:00:00 hamster 3

我想将它与以下数据框合并:(df2)

event date event type people attended
1/1/19 charity 7
1/4/19 food drive 10
1/12/19 raffle 15

具有所需的输出:

(df2 的日期也可以是 1/1/19 00:00:00 格式,没关系。但是 df1 的日期必须有时间)

date animal animal cages sold event type people attended
1/1/19 charity 7
1/1/19 10:00:00 dog 3
1/1/19 11:00:00 horse 6
1/4/19 food drive 10
1/5/19 11:00:00 ferret 5
1/12/19 raffle 15
1/12/19 10:00:00 bird 2
1/12/19 11:00:00 hamster 3

我尝试过output_df = pd.merge(df1, df2, left_on='date1', right_on='event date'),但这会导致重复匹配。我只需要 df2 中的行存在一次,并且在它们自己的单独行上。

我在想也许可以使用df1.append(df2),然后以某种方式将 date1 和事件日期放在同一列中,这样我就可以按该列排序。

请帮忙!!!

【问题讨论】:

  • pd.concat([df1, df2.rename(columns={'event date': 'date1'})])?

标签: python dataframe join merge


【解决方案1】:

您正在尝试连接,而不是合并。只需要先重命名日期列,将日期设为实际日期时间进行排序,然后进行连接和排序。

df1.rename(columns={'date1':'date'}, inplace=True)
df1['date'] = pd.to_datetime(df1['date'])

df2.rename(columns={'event date':'date'}, inplace=True)
df2['date'] = pd.to_datetime(df2['date'])
df = pd.concat([df1,df2])

df = df.sort_values(by='date')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多