如何以Pythonic方式在Pandas DataFrame中用空格拼接所有列为新列?
Pythonic方法拼接Pandas DataFrame所有列为新列
嘿,你问的这个问题太有代表性了——手动逐个列拼接不仅写起来麻烦,要是列数多的话简直是维护灾难!当然有更符合Python风格的实现方式,下面给你几种实用的方案,结合你的示例数据来演示:
首先先准备好示例数据,方便大家复现验证:
import pandas as pd data = { 'a': ['1', 'a', 'p'], 'b': ['2', 'd', '0'], 'c': ['3', '3', 'k'] } df = pd.DataFrame(data)
方法一:apply() + str.join()(最通用)
这是最直观的Pythonic写法,沿着行方向处理每一行数据,把整行元素转成字符串后用空格拼接:
# 处理所有列,自动适配列数变化 df['combined'] = df.apply(lambda row: ' '.join(row.astype(str)), axis=1)
小提示:
row.astype(str)是为了确保所有列的内容都转成字符串类型,避免遇到整数/浮点数列时拼接出错,如果你确定所有列本来就是字符串,这一步可以省略。
方法二:agg()方法(更简洁)
用agg对每一行直接应用字符串拼接操作,代码更短:
# 先统一转字符串再拼接,兼容非字符串列 df['combined'] = df.astype(str).agg(' '.join, axis=1)
运行任意一种方法后,你的DataFrame都会得到想要的结果:
a b c combined 0 1 2 3 1 2 3 1 a d 3 a d 3 2 p 0 k p 0 k
这两种方法都完美避免了手动列拼接的繁琐,不管你的DataFrame有3列还是30列,代码都不用改,完全符合Python“简洁、可读、高效”的风格~
内容的提问来源于stack exchange,提问作者magladde
相关产品推荐
相关产品推荐

