如何合并两个DataFrame且仅保留id列匹配的行?
解决方法
你之前合并后保留全部id,是因为没有指定正确的连接模式,只需要显式设置pd.merge的how参数为inner即可,内连接模式会仅保留两个表中合并键完全匹配的行,刚好符合你的需求。
完整可运行代码示例
import pandas as pd # 构造第一个DataFrame df1 = pd.DataFrame({ "id": ["a1", "a2", "a3"], "value": [12, 15, 17] }) # 构造第二个DataFrame df2 = pd.DataFrame({ "id": ["a1", "a2", "a7"], "value1": [22, 58, 10] }) # 按id列执行内连接合并 merge_result = pd.merge(df1, df2, on="id", how="inner")
运行后merge_result的输出完全匹配你的预期结果:
| id | value | value1 |
|---|---|---|
| a1 | 12 | 22 |
| a2 | 15 | 58 |
参数说明
on="id":指定两个表共同的合并基准为id列how="inner":设置合并模式为内连接,仅保留两个表中id完全一致的行。该参数是pd.merge的默认值,显式标注可以避免环境默认配置异常导致的错误
内容的提问来源于stack exchange,提问作者skulldoger
相关产品推荐
相关产品推荐

