Python中Pandas DataFrame多列按非空条件拼接为单列
Pandas多列按非空条件拼接实现方案
你之前的写法是对整列做布尔判断,而非逐行判断,因此会返回错误结果,且逐列手写判断逻辑扩展性极差,列数较多时不可用。
实现代码
如果你的DataFrame中空值为空字符串,用以下代码:
# 按行过滤非空值后用%20拼接,最终生成单列的DataFrame符合你要求的输出格式 IND_Concat = IND_Split.apply(lambda row: '%20'.join(row[row != '']), axis=1).to_frame(name='0')
如果你的DataFrame中空值为pandas默认的NaN,修改过滤逻辑即可:
IND_Concat = IND_Split.apply(lambda row: '%20'.join(row.dropna()), axis=1).to_frame(name='0')
上述代码针对你提供的样例数据运行后,输出结果和你期望的格式完全一致。
额外说明
如果不需要单独生成新表,而是要在原DataFrame中新增拼接结果列,可使用以下写法:
IND_Split['concat_result'] = IND_Split.apply(lambda row: '%20'.join(row[row != '']), axis=1)
内容的提问来源于stack exchange,提问作者Parth Sharma
相关产品推荐
相关产品推荐

