Sample data:
JavaScript
x
9
1
import pandas as pd
2
import numpy as np
3
import datetime
4
5
data = {'value': [1,2,4,3], 'names': ['joe', 'bob', 'joe', 'bob']}
6
start, end = datetime.datetime(2015, 1, 1), datetime.datetime(2015, 1, 4)
7
test = pd.DataFrame(data=data, index=pd.DatetimeIndex(start=start, end=end,
8
freq="D"), columns=["value", "names"])
9
gives:
JavaScript
1
6
1
value names
2
2015-01-01 1 joe
3
2015-01-02 2 bob
4
2015-01-03 4 joe
5
2015-01-04 3 bob
6
I want to resample by ‘2D’ and get the max value, something like:
JavaScript
1
2
1
df.resample('2D')
2
The expected result should be:
JavaScript
1
4
1
value names
2
2015-01-01 2 bob
3
2015-01-03 4 joe
4
Can anyone help me?
Advertisement
Answer
You can resample to get the arg max of value and then use it to extract names and value
JavaScript
1
9
1
(df.resample('2D')[['value']].idxmax()
2
.assign(names=lambda x: df.loc[x.value]['names'].values,
3
value=lambda x: df.loc[x.value]['value'].values)
4
)
5
Out[116]:
6
value names
7
2015-01-01 2 bob
8
2015-01-03 4 joe
9