我正在合并两个数据帧,但是这样做时,我有很多重复项。 我的代码有点长,所以这是两个数据集的示例:
df1
Season SeasonType ... PitchingWalksPerNineInnings_17 PitchingWeightedOnBasePercentage_17
GameID ...
47547 2017.0 1.0 ... NaN NaN
47546 2017.0 1.0 ... NaN NaN
50022 2017.0 1.0 ... NaN NaN
47556 2017.0 1.0 ... NaN NaN
47557 2017.0 1.0 ... NaN NaN
... ... ... ... ... ...
49970 2017.0 1.0 ... NaN NaN
49964 2017.0 1.0 ... NaN NaN
49974 2017.0 1.0 ... NaN NaN
49975 2017.0 1.0 ... NaN NaN
47562 NaN NaN ... NaN NaN
df2
GameID StatID_28 ... PitchingWalksPerNineInnings_28 PitchingWeightedOnBasePercentage_28
0 47562 1748078 ... 5.0 0.351
[1 rows x 52 columns]
GameID列是我两者的索引。 df1可以具有与df2类似的多个列,这就是为什么我使用它来获取它们:
columnsMerge = list(set(df.columns).intersection(set(tpstatdf.columns)))
columnsMerge.append('GameID')
我已经共享了此处生成的csv文件:https://drive.google.com/drive/folders/1RVKNsB42ixQ2I2WUqqu_dDNjmcVIz5No?usp=sharing
请在下面找到我得到的。预期只有一行ID与以下两行汇总在一起。
对此,任何帮助将不胜感激。
谢谢
杰弗里
答案 0 :(得分:0)
如果要保留所有列,则可以join
带后缀,并且仅保留columnMerge中的列。
df_merged = df1.join(df2, how='right', rsuffix='_df2')
columnsMerge = list(set(df.columns).intersection(set(tpstatdf.columns)))
cols = [c if any(c in s for s incolumnsMerge) for c in df_merged.columns]
df_merged = df_merged[cols]