合并DataFrame时生成重复值的实现方法
解决DataFrame按Name匹配合并的问题
先构造示例数据(方便你对应自己的实际数据)
import pandas as pd # 你的df1结构示例 df1 = pd.DataFrame({ 'Name': ['John', 'John', 'Mary', 'Mary'], 'Animal': ['Dog', 'Cat', 'Bird', 'Fish'] }) # 你的df2结构示例 df2 = pd.DataFrame({ 'Name': ['John', 'Mary'], 'Color': ['Blue', 'Pink'] })
核心实现代码
直接用merge()方法,按Name列做匹配,它会自动将每个Name对应的Color映射到该Name的所有Animal条目上:
# 默认内连接,只保留两个表中都存在的Name数据 df3 = pd.merge(df1, df2, on='Name')
执行后得到的df3结果:
Name Animal Color 0 John Dog Blue 1 John Cat Blue 2 Mary Bird Pink 3 Mary Fish Pink
补充说明
- 如果你需要保留df1中所有的行(哪怕df2里没有对应Name的数据),可以用左连接:
df3 = pd.merge(df1, df2, on='Name', how='left') - 你之前尝试的
concat()/append()是单纯的行/列拼接,不会根据Name做匹配,只会导致数据错位;join()默认按索引匹配,若未将Name设为索引,无法正确关联,而merge()是专门用于按指定列做关联匹配的方法,更适合这种场景。
内容的提问来源于stack exchange,提问作者NigelThornberry7
相关产品推荐
相关产品推荐

