我有一个带有多个列的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")
的操作并将结果放入新列中。那就是我被困住的地方。
答案 0 :(得分:0)
我们可以尝试max
和key
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)
应该工作。