Python 如何获取/检查df.query()中的行位数?

Python 如何获取/检查df.query()中的行位数?,python,pandas,filter,digits,Python,Pandas,Filter,Digits,我有一个数据帧df,如: number | col1 123 | a 1234 | b 567 | c 我想计算“number”列中有多少行的数字大于或小于3位。 列的名称为dtype=int64 当我尝试时: count = df.query( """ ... 'some other filters' or \ MSN.str.len() != 3 """ ) print(count)

我有一个数据帧df,如:

number | col1
123    | a
1234   | b
567    | c
我想计算“number”列中有多少行的数字大于或小于3位。 列的名称为dtype=int64

当我尝试时:

count = df.query(
    """
    ... 'some other filters' or \
    MSN.str.len() != 3
    """
)
print(count)
我得到:

AttributeError:只能对字符串值使用.str访问器

正在尝试使用转换为str()

ValueError:“str”不是受支持的函数

转换为字符串也会计算负号,所以这不是一个真正的解决方案

删除len=3的检查将删除所有错误消息并打印计数

如何计算数据帧查询中的数字而不转换为str和apply(对于我的行数来说太慢了)

给予

print(df[(df['numLen'])>3和(df['number'])>0.count())
用于长度大于3的项目

或者
df[(df['number'])>=100].count()
这将为您提供所有超过3位的数字

In [25]: df = pd.DataFrame({'number':[123, 25, 1234, -165, -99, 567], 'col' : ['a','b','c', 'd', 'e', 'f']})

In [26]: df
Out[26]:
   number col
0     123   a
1      25   b
2    1234   c
3    -165   d
4     -99   e
5     567   f

In [27]: df.query("100 <= abs(number) <= 999")['number'].size
Out[27]: 3
给予

print(df[(df['numLen'])>3和(df['number'])>0.count())
用于长度大于3的项目

df[(df['number'])>=100].count()
这将为您提供所有在[25]中超过3位的数字

:df=pd.DataFrame({'number':[123,251234,-165,-99567],'col':['a','b','c','d','e','f']))
In [25]: df = pd.DataFrame({'number':[123, 25, 1234, -165, -99, 567], 'col' : ['a','b','c', 'd', 'e', 'f']})

In [26]: df
Out[26]:
   number col
0     123   a
1      25   b
2    1234   c
3    -165   d
4     -99   e
5     567   f

In [27]: df.query("100 <= abs(number) <= 999")['number'].size
Out[27]: 3
In[26]:df 出[26]: 数字列 0 123 a 125B 21234 c 3-165 d 4-99 e 5567 f 在[27]:df.query中(“在[25]:df=pd.DataFrame({'number':[123,251234,-165,-99567],'col':['a','b','c','d','e','f'])中的100

In[26]:df
出[26]:
数字列
0 123 a
125B
21234 c
3-165 d
4-99 e
5567 f

在[27]中:df.query(“100这是使用apply,这对我的数据集来说太长了。它还将计算负号,这是错误的。将简单的答案放在最后,它将给出长度超过3的所有数字,没有负数,只需计算超过100的数字…这是使用apply,这对我的数据集来说太长了。它还将计算负数这是错误的。把简单的答案放在最后,它会给你所有长度超过3的数字,没有负数,只要数一数超过100的数字。。。
    number  col numLen
0   123     a   3
1   1234    b   4
2   567     c   3
In [25]: df = pd.DataFrame({'number':[123, 25, 1234, -165, -99, 567], 'col' : ['a','b','c', 'd', 'e', 'f']})

In [26]: df
Out[26]:
   number col
0     123   a
1      25   b
2    1234   c
3    -165   d
4     -99   e
5     567   f

In [27]: df.query("100 <= abs(number) <= 999")['number'].size
Out[27]: 3