熊猫比较多列并将最长的字符串返回到新列

时间:2020-06-26 00:13:07

标签: python pandas

我有一个带有多个列的pandas数据框,我试图将其合并为一个列,并保留更长的字符串。不幸的是我迷失了如何做到这一点。潜在列的数量有限,可能有两个或更多(最可能的情况是两个)。

potential_columns = ["name", "full_name", "complete_name", ...]
actual_columns = set(dataframe.columns).intersect(potential_columns)

df[actual_columns]
       full_name                      name
0      Philip J Fry                   Fry
1      Bender                         Bender Bending Rodriguez 
2      Turanga Leela                  Leela

基本上,我想执行类似df["new_col"] = max("Philip J Fry", "Fry")的操作并将结果放入新列中。那就是我被困住的地方。

2 个答案:

答案 0 :(得分:0)

我们可以尝试maxkey

df['New']=df.apply(lambda x : max(x,key=len),axis=1)
df
       full_name                       name                        New
0   Philip J Fry                        Fry               Philip J Fry
1         Bender  Bender Bending Rodriguez   Bender Bending Rodriguez 
2  Turanga Leela                      Leela              Turanga Leela

或与np.where

df['New']=np.where(df.full_name.str.len()>df.name.str.len(),df.full_name,df.name)
df
       full_name                       name                        New
0   Philip J Fry                        Fry               Philip J Fry
1         Bender  Bender Bending Rodriguez   Bender Bending Rodriguez 
2  Turanga Leela                      Leela              Turanga Leela

答案 1 :(得分:0)

df["newcol"] = df.apply(lambda x: x['full_name'] if len(x['full_name'] > len(x['name']) else x['name'], axis = 1)

应该工作。