我有这个df
:
CODE DATE MONTH_DAY PPTOT SECTOR_1
0 472606FA 2001-01-01 01-01 0.0 SN
1 472606FA 2001-01-02 01-02 0.0 SN
2 472606FA 2001-01-03 01-03 0.7 SN
3 472606FA 2001-01-04 01-04 NaN SN
4 472606FA 2001-01-05 01-05 NaN SN
... ... ... ... ...
248220 47E2A75C 2021-04-26 04-26 0.0 SI
248221 47E2A75C 2021-04-27 04-27 0.0 SI
248222 47E2A75C 2021-04-28 04-28 0.0 SI
248223 47E2A75C 2021-04-29 04-29 0.0 SI
248224 47E2A75C 2021-04-30 04-30 NaN SI
[248225 rows x 5 columns]
我想应用 2 个条件。当df['PPTOT'] <= 0
和df['SECTOR_1']=='CS'
,df['PPTOT']
必须是np.nan
。所以我做了这个代码:
df.loc[(df['PPTOT'] <= 0 & df['SECTOR_1']=='CS'), 'PPTOT'] = np.nan
但我收到此错误:
TypeError: unsupported operand type(s) for &: 'bool' and 'str'
所以我只写了这样的括号df['PPTOT'] <= 0
:
df.loc[(df['PPTOT'] <= 0) & df['SECTOR_1']=='CS', 'PPTOT'] = np.nan
但我又得到另一个错误:
ValueError: unknown type str64
我该如何解决这个问题?或者也许有另一种有效或准确的方法来做到这一点?
提前致谢。
该&
运营商的优先级高于<=
,==
等等,所以你必须添加的括号第二个条件为好。
df.loc[(df['PPTOT'] <= 0) & (df['SECTOR_1']=='CS'), 'PPTOT'] = np.nan
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句