如何拼接Series字符串并过滤None、NaN值,使用加号连接有效内容
解决方案
你可以通过以下两种方式实现需求:
方案1:最小改动原有代码
只需要修改拼接时的lambda逻辑,过滤掉无效值即可:
import pandas as pd x1=x.str.split(pat='/').str[0].copy() x2=x1.str.split(expand=True).copy() # 过滤掉NaN、None以及转字符串后为'None'/'nan'的空值 x2['combined']=x2[x2.columns].apply(lambda row: '+'.join([v for v in row.values if pd.notna(v) and str(v).strip() not in ('None', 'nan', '')]), axis=1) print(x2['combined'])
方案2:更简洁的高性能写法
不需要将split结果展开为DataFrame,直接对分割后的列表做处理,从根源避免生成补位的None/NaN:
x1 = x.str.split('/').str[0].copy() # 按空格分割后直接过滤有效内容拼接 result = x1.str.split().apply(lambda item: '+'.join([i for i in item if i.strip()])) print(result)
原有代码出现多余None/NaN的原因是split(expand=True)会将所有行补全到和最长元素行相同的列数,不足的位置自动填充NaN,转字符串拼接时就会被带入结果。
内容的提问来源于stack exchange,提问作者AlexWithYou
相关产品推荐
相关产品推荐

