Skip to main content
 首页 » 编程设计

python之在 Pandas 中将任意数量的列合并为一个

2025年05月04日33artech

这个问题是关于here的具体案例的一般版本.

我有一个 pandas 数据框,其中的列包含整数。我想将所有这些整数连接成一列中的字符串。

给定this answer ,对于特定的列,这有效:

(dl['ungrd_dum'].map(str) + 
 dl['mba_dum'].map(str) + 
 dl['jd_dum'].map(str) + 
 dl['ma_phd_dum'].map(str)) 

但假设我有许多(数百个)这样的列,它们的名称在列表 dummies 中。我敢肯定,有一些很酷的 pythonic 方式可以用一条神奇的线来完成这一切。我试过将 map 与 dummies 一起使用,但还没有弄明白。

请您参考如下方法:

IIUC 你应该可以做到

df[dummies].astype(str).apply(lambda x: ''.join(x), axis=1) 

例子:

In [12]: 
 
df = pd.DataFrame({'a':np.random.randint(0,100, 5), 'b':np.arange(5), 'c':np.random.randint(0,10,5)}) 
df 
Out[12]: 
    a  b  c 
0   5  0  2 
1  46  1  3 
2  86  2  4 
3  85  3  9 
4  60  4  4 
In [15]: 
 
cols=['a','c'] 
df[cols].astype(str).apply(''.join, axis=1) 
Out[15]: 
0     52 
1    463 
2    864 
3    859 
4    604 
dtype: object 

编辑

正如@JohnE 所指出的,您可以调用 sum 而不是这样会更快:

df[cols].astype(str).sum(axis=1) 

但是,这会将 dtype 隐式转换为 float64,因此您必须再次转换回 str 并在必要时切掉小数点:

df[cols].astype(str).sum(axis=1).astype(str).str[:-2]