如何使用Pandas将23列数据合并为单列?已尝试相关写法
简洁合并Pandas多列成新列的方法
嘿,我懂你手动写23列拼接代码的痛苦——不仅敲得手酸,还容易漏列或者打错列名对吧?其实有更简洁、易维护的方法来搞定这个需求,不用把每一列都挨个写出来:
核心思路
先明确你要合并的23列范围(比如列名是A到W,或者前23列),把它们放进一个列名列表,然后批量处理拼接。
具体实现方法
方法1:用sum()批量拼接(最简洁)
字符串类型的列调用sum(axis=1)时,会自动按行拼接所有列的内容,代码非常短:
# 先定义要合并的23列,比如前23列或者指定列名列表 cols = df.columns[:23] # 如果前23列是目标列 # 或者指定具体列名:cols = ['A', 'B', 'C', ..., 'W'] # 生成新列X df = df.assign(X=df[cols].astype(str).sum(axis=1))
方法2:用apply()+join(适合需要自定义分隔符的场景)
如果之后需要在拼接的内容之间加分隔符(比如空格、逗号),用join更灵活:
# 无分隔符拼接 df['X'] = df[cols].astype(str).apply(''.join, axis=1) # 加分隔符(比如用逗号分隔) df['X'] = df[cols].astype(str).apply(','.join, axis=1)
处理缺失值的版本
如果你的列里有NaN,直接转字符串会变成'NaN',可以先把缺失值替换为空字符串:
df['X'] = df[cols].fillna('').astype(str).sum(axis=1)
为什么比你之前的写法好?
- 不用重复写23次
df.列名.astype(str),代码更简洁 - 列数变化时,只需要调整
cols列表就行,维护成本低 - 减少手动输入的错误概率
内容的提问来源于stack exchange,提问作者M. Palamas
相关产品推荐
相关产品推荐

