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

在其他两列熊猫的条件下创建一个新列

在其他两列熊猫的条件下创建一个新列

呼唤远方 2021-12-21 15:58:34
我有一个包含两列的数据框。我想创建一个新列并输入具有最长字符串的列。所以        column_a        column_b             column_c   0  'dog is fast'   'dog is faster'      'dog is faster' (desired output)我试过这段代码,但得到一个错误,说 int 不可迭代,我正在考虑将系列合并到 df。我不确定如何立即将它实施到 df 的列中。column_c = pd.Series() for i in len(df.column_a):  if len(df.column_a.iloc[i]) >= len(df.column_b.iloc[0]):    column_c.append(df.column_a.iloc[i])  else:    column_c.append(df.column_b.iloc[i])任何帮助都值得赞赏。
查看完整描述

3 回答

?
POPMUISE

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

使用pandas.DataFrame.apply:


给定样本数据


import pandas as pd


df = pd.DataFrame([['fast', 'faster'], ['slower', 'slow']])

        0       1

0    fast  faster

1  slower    slow


df['column_c'] = df.apply(lambda x:max(x, key=len), 1)

输出:


        0       1 column_c

0    fast  faster   faster

1  slower    slow   slower


查看完整回答
反对 回复 2021-12-21
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

可以使用 df.apply()

df['column_c'] = df.apply(lambda x: x[0] if len(x[0]) > len(x[1]) else x[1], axis=1)


查看完整回答
反对 回复 2021-12-21
?
哔哔one

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

使用np.where与str.len


df['column_c']=np.where(df.column_a.str.len()>df.column_b.str.len(),df.column_a,df.column_b)

df

Out[301]: 

        column_a         column_b         column_c

0  'dog is fast'  'dog is faster'  'dog is faster'


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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