繁体   English   中英

在 Pandas DataFrame 中应用 IF 条件

[英]Applying an IF condition in Pandas DataFrame

我正在使用 2 个可选代码在我的 df 中创建一个新列,并包含所需的值:

选项1

cov19.loc[cov19['cases'] <= 10, 'estrats'] = 'Very Low' 
cov19.loc[cov19['cases'] > 10 and <= 50, 'estrats'] = 'Low' 
cov19.loc[cov19['cases'] > 50 and <= 100, 'estrats'] = 'Medium' 
cov19.loc[cov19['cases'] > 100 and <= 1000, 'estrats'] = 'High' 
cov19.loc[cov19['cases'] > 1000, 'estrats'] = 'Very High' 

返回错误 1:

cov19.loc[cov19['set_of_numbers'] > 10 and <= 50, 'estrats'] = 'Low'
                                            ^
SyntaxError: invalid syntax

可选代码 2

cov19.loc[cov19['cases'] <= 10, 'estrats'] = 'Very Low' 
cov19.loc[cov19['cases'] > 10 and cov19['cases'] <= 50, 'estrats'] = 'Low' 
cov19.loc[cov19['cases'] > 50 and cov19['cases'] <= 100, 'estrats'] = 'Medium' 
cov19.loc[cov19['cases'] > 100 and cov19['cases']<= 1000, 'estrats'] = 'High' 
cov19.loc[cov19['cases'] > 1000, 'estrats'] = 'Very High' 

返回错误 2

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这就是你想要的:

cov19.loc[(cov19['cases'] > 10) & (cov19['cases'] <= 50), 'estrats'] = 'Low' 

&在这里进行元素与操作,并使用括号将操作数包装到它。

另外,关于& vs and的更多说明:

and是 boolean 操作,其中&是按位的。 因此,当您想要计算对象的各个组件之间的 AND 运算时,请使用&

暂无
暂无

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

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