如何 get/check df.query() 中一行的位数?
How to get/check number of digits of a row in a df.query()?
我有一个像这样的数据框 df:
number | col1
123 | a
1234 | b
567 | c
我想计算“数字”列中有多少行的数字多于或少于 3 位。
列为 dtype = int64.
当我尝试时:
count = df.query(
"""
... 'some other filters' or \
number.str.len() != 3
"""
)
print(count)
我得到:
AttributeError: Can only use .str accessor with string values!
尝试使用
转换为 str()
count = df.query(
"""
... 'some other filters' or \
str(number).str.len() != 3
"""
)
print(count)
ValueError: "str" is not a supported function
转换为字符串也会计算负号,所以无论如何这都不是真正的解决方案。
删除 len = 3 的检查会删除所有错误消息并打印计数。
如何在不转换为 str 且不应用的情况下计算数据帧查询中的数字(对于我的行数来说太慢了)?
df = pd.DataFrame({'number':[123,1234,567], 'col' : ['a','b','c']})
df['numLen'] = df['number'].apply(lambda x : len(str(x)))
给予
number col numLen
0 123 a 3
1 1234 b 4
2 567 c 3
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
我有一个像这样的数据框 df:
number | col1
123 | a
1234 | b
567 | c
我想计算“数字”列中有多少行的数字多于或少于 3 位。 列为 dtype = int64.
当我尝试时:
count = df.query(
"""
... 'some other filters' or \
number.str.len() != 3
"""
)
print(count)
我得到:
AttributeError: Can only use .str accessor with string values!
尝试使用
转换为 str()count = df.query(
"""
... 'some other filters' or \
str(number).str.len() != 3
"""
)
print(count)
ValueError: "str" is not a supported function
转换为字符串也会计算负号,所以无论如何这都不是真正的解决方案。
删除 len = 3 的检查会删除所有错误消息并打印计数。
如何在不转换为 str 且不应用的情况下计算数据帧查询中的数字(对于我的行数来说太慢了)?
df = pd.DataFrame({'number':[123,1234,567], 'col' : ['a','b','c']})
df['numLen'] = df['number'].apply(lambda x : len(str(x)))
给予
number col numLen
0 123 a 3
1 1234 b 4
2 567 c 3
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