Pandas比较多个列并将最长字符串返回到新列

2024-06-02 07:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个列的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")的操作,并将结果放入一个新列中。这就是我被卡住的地方


Tags: columns数据字符串namepandasdf数量philip
2条回答
df["newcol"] = df.apply(lambda x: x['full_name'] if len(x['full_name'] > len(x['name']) else x['name'], axis = 1)

应该有用

我们可以用key试试max

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

相关问题 更多 >