繁体   English   中英

根据另一列中的值创建新列

[英]Create a new column based on value in another column

我有一个数据框:

 id|concept    |description
 12|           |rewards member
 12|tier one   |
 12|not avail  |rewards member

目标:使用conceptdescription列中的内容创建一个新列final_desc

有4种可能的情况:

  1. concept列有值,在description中没有,其中final_descconcept中的值

  2. description列中有值, concept中没有,其中final_descdescription中的值

  3. concept列中的值无效,其中final_descdescription中的值

  4. conceptdescription栏均为空,其中final_desc为空

我尝试使用 where 语句,但这不考虑场景 3。

df['final_desc'] = np.where(df['concept'].isnull(), df['description'], df['concept'])

我想我需要一个自定义 function 但不知道如何编写跨列工作

您可以结合使用replaceffill/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM