这个问题是关于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]
