2017-06-19 15 views

回答

1

您需要通过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?

+0

伟大的作品,非常感谢! – bartblons

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 
相关问题