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

时间:2019-02-08 21:01:53

标签: python pandas

我想将以空格(“”)分隔的pandas数据框中的所有列连接起来。除了df ['newcolumn'] = df ['a'] +“” df ['b'] +“ ... ...

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

3 个答案:

答案 0 :(得分:2)

lambdaaxis=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)

答案 1 :(得分:0)

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

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]

答案 2 :(得分:0)

我认为您的操作方式没有任何问题,但是另一种方式(也许是更多的pythonic?)将是:

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]。通过选择适当的索引,您可以对任意选择的列进行此操作。