Reputation: 17924
I have a simple dataframe which I would like to bin for every 3 rows.
It looks like this:
col1
0 2
1 1
2 3
3 1
4 0
and I would like to turn it into this:
col1
0 2
1 0.5
I have already posted a similar question here but I have no Idea how to port the solution to my current use case.
Can you help me out?
Many thanks!
Upvotes: 28
Views: 22675
Reputation: 117370
In Python 2 use:
>>> df.groupby(df.index / 3).mean()
col1
0 2.0
1 0.5
Upvotes: 53
Reputation: 389
For Python 2 (2.2+) users, who have "true division" enabled (e.g. by using from __future__ import division
), you need to use the "//" operator for "floor division":
df.groupby(df.index // 3).mean()
Upvotes: 4
Reputation: 899
The answer from Roman Pekar was not working for me. I imagine that this is because of differences between Python2
and Python3
. This worked for me in Python3
:
>>> df.groupby(df.index // 3).mean()
col1
0 2.0
1 0.5
Upvotes: 29