如何用Pandas合并无共同列的两个数据表?实操求助
解决Pandas合并数据表时的空值问题
看起来你遇到的核心问题是用错了合并逻辑——你原本想让两个表的行按顺序一一对应,但却用了字段值匹配的方式做合并,而你的listid和profile/emailid字段的值完全没有重叠,所以才会出现大量NaN。
正确的解决方案
因为你的需求是把两个表的互补列(一个表有listid,另一个有profile/emailid)按行位置对齐合并,而非通过字段值关联,推荐两种简单方法:
方法1:用pd.concat横向拼接
直接按列合并两个表,确保行索引对齐:
import pandas as pd data = pd.read_csv("offer1.txt") data1 = pd.read_csv("offer2.txt") # 按列拼接后删除空行(如果原数据存在空行的话) merged_data = pd.concat([data, data1], axis=1).dropna() print(merged_data)
方法2:按索引做合并
如果两个表的行数完全一致,也可以通过索引进行精准对齐:
import pandas as pd data = pd.read_csv("offer1.txt") data1 = pd.read_csv("offer2.txt") # 基于左右表的索引做内连接,保证行完全对应 merged_data = data.merge(data1, left_index=True, right_index=True, how='inner') print(merged_data)
为什么原来的方法无效?
你之前的merge(left_on='listid', right_on='profile/emailid', how='left')是在寻找listid和profile/emailid值相同的行进行匹配,但你的数据里listid是数字ID(比如588001),profile/emailid是邮箱或另一类ID,二者没有任何匹配的值,所以合并后自然会出现大量空值。
内容的提问来源于stack exchange,提问作者Divya Nagandla
相关产品推荐
相关产品推荐

