You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并每行值为#分隔字符串且忽略空值的问题求解

解决Pandas合并行字符串时空值导致连续分隔符的问题

你当前代码出现连续#的核心原因是na_filter=False参数会将CSV中的空值读取为空字符串,而stack()方法默认只会过滤NaN类型的缺失值,不会过滤空字符串,导致空字符串参与了拼接操作。

以下是两种可行的修改方案:

方案1:调整读取参数,利用原生缺失值过滤逻辑

移除na_filter=False参数,让pandas将空值识别为NaN,stack()默认会自动丢弃NaN值,不需要额外处理:

import pandas as pd

df = pd.read_csv("test.csv")
test = df.stack().groupby(level=0).apply('#'.join)
print(test.to_dict())

适用场景:CSV中的空值为pandas默认可识别的格式(空单元格、NA、NULL等)。


方案2:显式过滤空字符串,兼容性更强

如果CSV中的空值是显式的空字符串,或者需要同时过滤全空格的内容,可以在拼接前主动筛选非空元素:

import pandas as pd

df = pd.read_csv("test.csv", na_filter=False)
# 逐行遍历,只拼接非空的元素
test = df.apply(lambda row: '#'.join([item for item in row if item.strip()]), axis=1)
print(test.to_dict())

这个方案不需要依赖pandas的缺失值识别逻辑,对各类空值场景的兼容性更好。


内容的提问来源于stack exchange,提问作者roboragi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:27:04