创建一个新列,该列是前面所有列的串联

2024-04-19 23:03:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把数据框中的所有列连接起来,用空格(“”)隔开。除了df['newcolumn']=df['a']+“”df['b']+“”之外,还有其他更具python风格的方法吗。。。你知道吗

a   b   c   combined
1   2   3   1 2 3
a   d   3   a d 3
p   0   k   p 0 k

Tags: 数据方法df风格空格combinednewcolumn
3条回答

lambda可以沿着axis=1使用

import pandas as pd
df = pd.DataFrame({'a':['1','a','p'], 
             'b':[2,'d',0],
             'c':[3,3,'k']})
df=df.astype(str)
df['combined']=df[df.columns].apply(lambda x: ' '.join(x), axis=1)

我不认为你做这件事的方式有什么问题,但是有一种不同的方式(也许更像Python?)将是:

df['newcolumn'] = df[['a', 'b', 'c']].apply(lambda x: ' '.join(x), axis=1)

为了使其更适用于大型df:

df['newcolumn'] = df.iloc[:,0:3].apply(lambda x: ' '.join(x), axis=1) 

其中iloc中的0:3只是列索引[0,1,2]。通过选择适当的索引,可以对任意选择的列执行此操作。你知道吗

它将使最后一列成为所有值的列表,但您可以使用以下选项:

df['combined'] = df.apply(lambda x: x.tolist(), axis=1)

输出如下:

a   b   c   combined
1   2   3   [1,2,3]
a   d   3   [a,d,3]
p   0   k   [p,0,k]

相关问题 更多 >