"TypeError: bad operand type for unary ~: 'float'"不下到NA(不可用)?



我正在尝试过滤panda数据帧。根据@jezrael在这里的回答,我可以使用以下内容来计算我将删除的行:

mask= ((analytic_events['section']==2) & 
~(analytic_events['identifier'].str[0].str.isdigit()))
print (mask.sum())

然而,当我在我的数据上运行这个时,我会得到以下错误:

TypeError Traceback(上次调用)在
1掩码=((analytic_events['ssection']==2)&
---->2~(analytic_events['identifier'].str[0].str.idigit())
3
4打印(mask.sum())

c: \program files\python37\lib\site packages\pandas\core\generic.py ininverse(self)
1454 defconverse(self-):1455尝试:->1456 arr=operator.inv(com.values_from_object(self))
1457返回selfarray_wrap(arr)
1458异常除外:

TypeError:一元~:"float"的操作数类型不正确

该错误bad operand type for unary ~: 'float'的公认智慧是一元运算符遇到NA值(例如,请参阅此答案)

问题是我没有任何这样的缺失数据。以下是我的分析。运行

analytic_events[analytic_events['section']==2]['identifier'].str[0].value_counts(dropna=False)

给出结果:

2 1207791
3 39289
1 533
。56

或运行

analytic_events[analytic_events['section']==2]['identifier'].str[0].str.isdigit().value_counts(dropna=False)

给出结果

真1247613
假56

使用下面@jezrael的回答中建议的更直接的方法

analytic_events[analytic_events['section']==2]['identifier'].isnull().sum()
analytic_events[analytic_events['section']==2]['identifier'].str[0].isnull().sum()

两者都产生输出零。因此没有NA(不可用)值。

为什么我得到错误

TypeError:一元~:"float"的操作数类型错误

来自本文开头的代码?

我认为您需要根据第一个条件进行筛选,然后在筛选值中再次进行筛选:

m1 = analytic_events['section']==2
mask = ~analytic_events.loc[m1, 'identifier'].str[0].str.isdigit()
print (mask.sum())

最新更新