Pandas合并列丢失数据:如何保留无对应Country的Description值?
DataFrame列拼接空值保留解决方案
问题原因
你当前的拼接代码在Country列值为NaN(空值)时,会导致整个拼接结果变为NaN,进而丢失Description列的内容——这是因为pandas中NaN与任何字符串拼接都会返回NaN。
解决方法
下面提供三种实用的实现方式:
方法1:用fillna填充空值后拼接
先把Country列的空值替换为空字符串,拼接后再去除多余的首尾空格:
Transactions["CountryAProvider"] = (Transactions["Country"].fillna("") + " " + Transactions["Description"].astype(str)).str.strip()
- 优势:代码简洁,无需额外导入库
str.strip()的作用:避免Country为空时,拼接结果开头出现多余空格
方法2:用str.cat方法直接处理
pandas的str.cat原生支持空值处理,指定na_rep参数为空字符串即可:
Transactions["CountryAProvider"] = Transactions["Country"].str.cat(Transactions["Description"].astype(str), sep=" ", na_rep="").str.strip()
- 优势:专为字符串拼接设计,逻辑更清晰
方法3:用numpy.where做条件判断
直接通过条件分支处理两种情况,逻辑最直观:
import numpy as np Transactions["CountryAProvider"] = np.where( Transactions["Country"].notna(), # 判断Country是否非空 Transactions["Country"] + " " + Transactions["Description"].astype(str), # 非空时拼接 Transactions["Description"].astype(str) # 空值时直接取Description )
- 优势:对新手友好,条件逻辑一目了然
内容的提问来源于stack exchange,提问作者paulroux121
相关产品推荐
相关产品推荐

