簡體   English   中英

如何獲取/檢查 df.query() 中一行的位數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM