【发布时间】: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