【发布时间】:2019-07-03 03:39:38
【问题描述】:
我想连接由空格 (" ") 分隔的 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
【问题讨论】:
我想连接由空格 (" ") 分隔的 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
【问题讨论】:
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)
【讨论】:
我不认为你这样做的方式有什么问题,但另一种方式(也许更 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]。您可以通过选择适当的索引对任意选择的列执行此操作。
【讨论】:
它将使最后一列成为所有值的列表,但您可以使用以下内容:
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]
【讨论】: