首页 > 解决方案 > 熊猫中的条件问题

问题描述

我有这个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 

我该如何解决这个问题?或者也许有另一种有效或准确的方法来做到这一点?

提前致谢。

标签: pythonpandas

解决方案


运算符的&优先级高于<=,==等,因此您还必须在第二个条件周围添加括号。

df.loc[(df['PPTOT'] <= 0) & (df['SECTOR_1']=='CS'), 'PPTOT'] = np.nan

推荐阅读