首页 > 解决方案 > 合并两个不同维度的数据框

问题描述

我想根据“代码”和“种族编号”合并数据框 1 和数据框 2。但是,如您所见,这些数据框的维度不同。我想合并这些数据框,以便保留数据框 1 中与数据框 2 不匹配的行。我在下面提供了一个我想要的输出示例。

应该注意的是,并非每场比赛都有赛道状况,有时赛道状况会因比赛而异。

数据框代码:

cols1 = ['Code', 'Date', 'Venue', 'Race Number', 'Distance', 'Race Time']
df1 = pd.DataFrame(data=data1, columns=cols1)
df.to_excel("test1.xlsx")
cols2 = ['Code', 'Race Number', 'Track Condition']
df2 = pd.DataFrame(data=data2, columns=cols2)

数据帧 1 的输出:

       Code                 Date Venue  Race Number  Distance Race Time
0   5162548  2020-11-28T13:15:00  WMAI            1      1708   1:52.83
1   5162548  2020-11-28T13:50:00  WMAI            2      1508   1:37.34
2   5162548  2020-11-28T14:25:00  WMAI            3      1608   1:43.89
3   5162548  2020-11-28T14:55:00  WMAI            4      1008   1:02.54
4   5162548  2020-11-28T15:25:00  WMAI            5      1008   1:02.18
5   5162548  2020-11-28T15:55:00  WMAI            6      1008   1:01.94

数据帧 2 的输出:

      Code  Race Number Track Condition
0  5162548            1          Good 4

合并数据框的所需输出:

      Code                 Date Venue  Race Number  Distance Race Time Track Condition
0  5162548  2020-11-28T13:15:00  WMAI           1      1708   1:52.83          Good 4
2  5162548  2020-11-28T14:25:00  WMAI           3      1608   1:43.89           Empty
3  5162548  2020-11-28T14:55:00  WMAI           4      1008   1:02.54           Empty
4  5162548  2020-11-28T15:25:00  WMAI           5      1008   1:02.18           Empty
5  5162548  2020-11-28T15:55:00  WMAI           6      1008   1:01.94           Empty

标签: pythonpandasdataframe

解决方案


外部合并可以给出结果

df = pd.merge(df1, df2, on=['Code', 'Race Number'], how='outer')
df['Track Condition']= df['Track Condition'].fillna('Empty')

推荐阅读