我想按月份对数据进行分组,选择每月的最后一行。
数据:
>>> 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
最佳答案
我认为您首先需要通过DatetimeIndex
从reset_index
创建列,然后将resample
与Resampler.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/