Pandas使用merge对dataframe进行合并时出现全为Nan的问题

在使用Pandas的merge操作合并DataFrame A和B时,如果结果中B的所有列都显示为Nan,这通常是由于键值不匹配导致的。可能的原因包括键值数据类型不一致和键值字符串的细节问题。解决方法包括确保键值数据类型相同(如将它们都转换为字符串)和处理键值字符串的空白。例如,通过strip()方法去除字符串前后的空格可以解决因多余空格引起的匹配失败问题。
摘要由CSDN通过智能技术生成

使用merge进行对dataframe A和B合并时(将B合并到A),结果B的列全部为Nan,即出现了A、B键值没有匹配上的问题。而A、B看似键值是可以匹配的,这里使用的键值是字符串。查看资料和分析,这里有两种常见的情况:(代码中的Key值按需调整)

  • 键值数据类型不一致可能导致无法匹配。将键值数据类型准换成一致的(这里展示将object类型转换成string):

df1.Key = df1.Street.astype(pd.StringDtype()) # 将object类型转换成string
df2.Key = df2.Street.astype(pd.StringDtype()) # 将object类型转换成string

若同一转换为int:

df1.Key = df1.Street.astype(int) # 将object类型转换成string
  • 键值字符串的细节有问题。我遇到的问题属于这个问题,A的键值字符串的前后各有1个空格(好坑啊),将空格去除后即可成功匹配

for i in range(len(df1['Key'])):
    df1['Street'][i] = df1['Street'][i].strip() # 去除前后的空格

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值