[英]How to get/check number of digits of a row in a df.query()?
我有一個 dataframe df 像:
number | col1
123 | a
1234 | b
567 | c
我想計算“數字”列中有多少行多於或少於 3 位數字。 該列為 dtype = int64。
當我嘗試:
count = df.query(
"""
... 'some other filters' or \
MSN.str.len() != 3
"""
)
print(count)
我得到:
AttributeError:只能使用帶有字符串值的.str 訪問器!
試圖轉換為 str()
count = df.query(
"""
... 'some other filters' or \
str(MSN).str.len() != 3
"""
)
print(count)
ValueError:“str”不是受支持的 function
轉換為字符串也會計算負號,所以無論如何這並不是一個真正的解決方案。
刪除對 len = 3 的檢查會刪除所有錯誤消息並打印計數。
如何計算 dataframe 查詢中的數字而不轉換為 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())
對於大於 number lenth 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.