Python / Pandas - 如何按两列分组,并计算两行之间第三列的值

时间:2017-06-19 08:06:50

标签: python pandas

我需要将数据框分组为两列,然后计算第三列中值的出现次数,介于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()

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要首先按boolean indexingquery进行过滤,然后groupby过滤size

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

What is the difference between size and count in pandas?

答案 1 :(得分:0)

您需要先过滤这些值,然后才能使用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