为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2021-11-02 20:14:02
我想连接由空格(“”)分隔的熊猫数据框中的所有列。除了 df['newcolumn'] = df['a'] + " " df['b'] + " " ...a   b   c   combined1   2   3   1 2 3a   d   3   a d 3p   0   k   p 0 k
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

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)


查看完整回答
反对 回复 2021-11-02
?
翻阅古今

TA贡献1780条经验 获得超5个赞

我不认为你这样做的方式有什么问题,但另一种方式(也许更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)

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


查看完整回答
反对 回复 2021-11-02
?
桃花长相依

TA贡献1860条经验 获得超8个赞

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


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]


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号