【发布时间】:2020-12-09 04:34:45
【问题描述】:
大家好,
我已经阅读了很多答案和博客,但我无法弄清楚我错过了什么简单的事情!。我正在使用“条件”函数来定义所有条件并将其应用于一个数据框列。如果条件满足,它应该创建/更新 2 个新的数据框列 'cat' 和 'subcat'。
如果你们能在这里帮助我,那将是一个很大的帮助!
dict = {'remark':['NA','NA','Category1','Category2','Category3'],
'desc':['Present','Present','NA','Present','NA']
}
df = pd.DataFrame(dict)
数据框看起来像这样:
remark desc
0 NA Present
1 NA Present
2 Category1 NA
3 Category2 Present
4 Category3 NA
我写了一个函数来定义如下条件:
def conditions(s):
if (s == 'Category1'):
x = 'insufficient'
y = 'resolution'
elif (s=='Category2):
x= 'insufficient'
y= 'information'
elif (s=='Category3):
x= 'Duplicate'
y= 'ID repeated'
else:
x= 'NA'
y= 'NA'
return (x,y)
我有多种想法可以在数据框列上执行上述功能,但没有运气。
df[['cat','subcat']] = df['remark'].apply(lambda x: pd.Series([conditions(df)[0],conditions(df)[1]]))
我预期的数据框应该是这样的:
remark desc cat subcat
0 NA Present NA NA
1 NA Present NA NA
2 Category1 NA insufficient resolution
3 Category2 Present insufficient information
4 Category3 NA Duplicate ID repeated
非常感谢。
【问题讨论】:
标签: python pandas dataframe lambda apply