我需要将数据框分组为两列,然后计算第三列中值的出现次数,介于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()
有什么想法吗?
答案 0 :(得分:2)
您需要首先按boolean indexing
或query
进行过滤,然后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
答案 1 :(得分:0)