Python 熊猫:对分组的数据帧列重新采样,获取对应于最大值的离散特征

Python 熊猫:对分组的数据帧列重新采样,获取对应于最大值的离散特征,python,pandas,group-by,max,resampling,Python,Pandas,Group By,Max,Resampling,这与我之前提出的问题类似,但差异很大,因为当数据分组时,解决方案不起作用: 鉴于一些数据: import pandas as pd import numpy as np import datetime data = {'group':['a', 'a', 'a','b','a', 'b'], 'value': [1,2,3,4,3,5], 'names': ['joe', 'bob', 'greg','joe', 'bob', 'greg'], 'dates'

这与我之前提出的问题类似,但差异很大,因为当数据分组时,解决方案不起作用:

鉴于一些数据:

import pandas as pd
import numpy as np
import datetime

data = {'group':['a', 'a', 'a','b','a', 'b'], 
        'value': [1,2,3,4,3,5], 'names': ['joe', 'bob', 'greg','joe', 'bob', 'greg'],
        'dates': ['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-03', '2015-01-04', '2015-01-04']}

df = pd.DataFrame(data=data, columns=["group", "value", "names"], 
                  index=pd.to_datetime(data['dates']))
给出:

           group value names
2015-01-01     a     1   joe
2015-01-02     a     2   bob
2015-01-03     a     3  greg
2015-01-03     b     4   joe
2015-01-04     a     3   bob
2015-01-04     b     5  greg
我希望得到:

            group value names
2015-01-01      a     2   bob
2015-01-03      a     3   bob
2015-01-03      b     5  greg
因此,将数据分组,按2天(“2D”)重新采样,然后收集与最大“值”对应的名称 我尝试了以下给出错误的方法:

(df.groupby('group').resample('2D')[['value']].idxmax()
   .assign(names=lambda x: df.loc[x.value]['names'].values,
           value=lambda x: df.loc[x.value]['value'].values)
)

分组后可以使用
apply
对值进行排序,按值命名列,然后取第一行

g = df.groupby(['group', pd.Grouper(freq='2D')])[['value', 'names']]
g.apply(lambda x: x.sort_values(['value', 'names'], ascending=[False, True]).iloc[0])\
 .reset_index('group')

           group  value names
2015-01-01     a      2   bob
2015-01-03     a      3   bob
2015-01-03     b      5  greg
这与使用重采样相同

g = df.groupby(['group'])[['value', 'names']]
g.resample('2D').apply(lambda x: x.sort_values(['value', 'names'], ascending=[False, True]).iloc[0])\
 .reset_index('group')

超级的。我知道我们不应该在这里表达我们的感谢,但我认为这是错误的:谢谢你抽出时间来帮助我!