[英]Create a new column based on value in another column
我有一个数据框:
id|concept |description
12| |rewards member
12|tier one |
12|not avail |rewards member
目标:使用concept
或description
列中的内容创建一个新列final_desc
有4种可能的情况:
在concept
列有值,在description
中没有,其中final_desc
是concept
中的值
description
列中有值, concept
中没有,其中final_desc
是description
中的值
concept
列中的值无效,其中final_desc
是description
中的值
concept
和description
栏均为空,其中final_desc
为空
我尝试使用 where 语句,但这不考虑场景 3。
df['final_desc'] = np.where(df['concept'].isnull(), df['description'], df['concept'])
我想我需要一个自定义 function 但不知道如何编写跨列工作
您可以结合使用replace
和ffill/bfill
:
df['final_desc'] = (df[['concept','description']].replace('not avail',np.nan)
.bfill(1)['concept']
)
Output:
id concept description final_desc
0 12 NaN rewards member rewards member
1 12 tier one NaN tier one
2 12 not avail rewards member rewards member
这可能会奏效:
df['final_desc'] = df.concept.replace('not avail',np.nan).fillna(df.description).fillna(df.concept.replace('not avail',np.nan))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.