簡體   English   中英

Python / Pandas - 如何按兩列分組,並計算兩行之間第三列的值

[英]Python/Pandas - How to group by two columns and count rows with value from third column between two numbers

我需要將數據框分組為兩列,然后計算第三列中值的出現次數,介於1和20之間。

數據框:

col1  col2  value
  a     b     1
  a     b     3
  a     b     22
  a     c     0
  a     c     3
  a     c     19

結果:

col1  col2  counter
 a     b      2
 a     c      2

我的代碼:

counter = data_frame.groupby(['column1', 'column2'])[((data_frame['value'] >= 1) & (data_frame['value'] < 20))].sum()

有任何想法嗎?

您需要首先通過boolean indexingquery過濾,然后使用聚合size進行groupby

df = data_frame[(data_frame['value'] >= 1) & (data_frame['value'] < 20)]
df = df.groupby(['col1', 'col2']).size().reset_index(name='counter')
print (df)
  col1 col2  counter
0    a    b        2
1    a    c        2

要么:

df = data_frame.query('value >= 1 & value < 20')
df = df.groupby(['col1', 'col2']).size().reset_index(name='counter')
print (df)
  col1 col2  counter
0    a    b        2
1    a    c        2

大熊貓的大小和數量有什么區別?

您需要先過濾這些值,然后才能使用groupbycount函數,如下所示:

df[(df.value<=20) & (df.value >= 1)].groupby(['col1','col2']).count().reset_index()

輸出:

    col1    col2    value
0   a       b       2
1   a       c       2


100 loops, best of 3: 2.5 ms per loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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