如何依据Code字段合并两个DataFrame数据集?
合并两个DataFrame的实现方法
你可以使用pandas的pd.merge()方法来实现按Code字段(或结合Date字段)合并两个DataFrame,以下是具体步骤:
1. 构造示例数据(模拟你的数据集)
import pandas as pd # DataFrame A df_a = pd.DataFrame({ 'Date': ['2020-01-01', '2020-01-02'], 'Code': ['X', 'Y'], 'Marks': [5, 7] }) # DataFrame B df_b = pd.DataFrame({ 'Date': ['2020-01-01', '2020-01-02'], 'Code': ['X', 'Y'], 'Win': [8, 0], 'Lose': [1, 6] })
2. 执行合并操作
方式一:仅按Code字段合并
如果只依据Code匹配,但两个DataFrame都有Date列,合并后会生成Date_x(来自df_a)和Date_y(来自df_b)两列:
merged_df = pd.merge(df_a, df_b, on='Code')
方式二:按Date+Code组合合并(推荐,匹配你的期望结果)
因为你的示例中同一Code对应的Date是一致的,同时按这两个字段合并可以避免重复的Date列,直接得到你想要的结果:
merged_df = pd.merge(df_a, df_b, on=['Date', 'Code'])
合并结果
执行方式二后,得到的DataFrame如下:
Date Code Marks Win Lose 0 2020-01-01 X 5 8 1 1 2020-01-02 Y 7 0 6
补充说明
pd.merge()默认是内连接(inner join),只保留两个DataFrame中都存在的匹配行,完全符合你的需求- 如果需要保留其中一个DataFrame的所有行,可以通过
how参数指定:how='left':保留df_a的所有行,匹配不到的df_b列填充NaNhow='right':保留df_b的所有行,匹配不到的df_a列填充NaNhow='outer':保留两个DataFrame的所有行,匹配不到的列填充NaN
内容的提问来源于stack exchange,提问作者Czz
相关产品推荐
相关产品推荐

