Python - 合并数据框/附加到列

Python - Merge Dataframes / Append on Column

我有以下格式的数据:

df1:

日期 1 动物 已售出动物笼
1/1/19 10:00:00 3
1/1/1911:00:00 6
19 年 1 月 5 日 11:00:00 雪貂 5
19 年 12 月 10:00:00 2
19 年 12 月 11:00:00 仓鼠 3

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

活动日期 事件类型 参加人数
2019 年 1 月 1 日 慈善事业 7
2019 年 1 月 4 日 食物驱动 10
2019 年 1 月 12 日 抽奖 15

具有所需的输出:

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

日期 动物 已售出动物笼 事件类型 参加人数
2019 年 1 月 1 日 慈善事业 7
1/1/19 10:00:00 3
1/1/1911:00:00 6
2019 年 1 月 4 日 食物驱动 10
19 年 1 月 5 日 11:00:00 雪貂 5
2019 年 1 月 12 日 抽奖 15
19 年 12 月 10:00:00 2
19 年 12 月 11:00:00 仓鼠 3

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

我在想也许可以使用 df1.append(df2),然后以某种方式将日期 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')