我想按月份对数据进行分组,选择每月的最后一行。

数据:

>>> df
Date
1985-10-14    46.50
1985-10-23    47.50
1985-10-24    46.88
1985-11-21    50.25
1985-11-22    50.38
1985-11-25    50.38
>>> df.groupby(pd.TimeGrouper('M')).nth(-1)
Date
1985-10-31    46.88
1985-11-30    50.38


预期结果:

1985-10-24    46.88
1985-11-25    50.38

最佳答案

我认为您首先需要通过DatetimeIndexreset_index创建列,然后将resampleResampler.last一起使用,最后删除index

print (df)
              col
Date
1985-10-14  46.50
1985-10-23  47.50
1985-10-24  46.88
1985-11-21  50.25
1985-11-22  50.38
1985-11-25  50.38


df = df.reset_index().resample('M', on='Date').last().reset_index(drop=True)
print (df)
        Date    col
0 1985-10-24  46.88
1 1985-11-25  50.38


对于较旧的版本,请从索引创建列:

df = df.assign(Date=df.index).resample('M').last().reset_index(drop=True)
print (df)
     col       Date
0  46.88 1985-10-24
1  50.38 1985-11-25




df['Date'] = df.index
df = df.resample('M').last().reset_index(drop=True)
print (df)
     col       Date
0  46.88 1985-10-24
1  50.38 1985-11-25

关于python - Pandas 集团(TimeGrouper),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44797290/

10-12 23:05