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')
我有以下格式的数据:
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')