繁体   English   中英

如何根据另一列中的值有条件地替换一列中的 NaN 值

[英]How to conditionally replace NaN values in a column based on values in another column

假设我有一个具有以下值的 dataframe:

科目编号 部门
CS201 计算机科学
CS202 钠盐

如果有人可以帮助我如何根据“课程代码”列中的值替换“部门”列中的 NaN 值,我将不胜感激。 要遵循的逻辑是,如果“CS”在该行的“课程代码”条目中,则将 NaN 替换为“CompSci”。

您可以创建一个可用于填充 NaN 值的映射。 创建映射的一个选项是使用mask到 select 值,其中Course_Code以“CompSci”开头:

df['Department'] = df['Department'].mask((df['Course_Code'].str.startswith('CS')) & df['Department'].isna(), 'CompSci')

Output:

  Course_Code Department
0       CS201    CompSci
1       CS202    CompSci

您可以使用更多条件作为 CompSci 的“CS”。

import pandas as pd 
import numpy as np
df = pd.DataFrame([['CS201', 'CompSci'],['CS201', np.NaN]], columns = ['Course_Code', 'Department'])

def condition(x):
    if (x['Course_Code'].startswith('CS')):
        return "CompSci"

df['Department'] = df.apply(condition, axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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