数据给出如下:
return
2010-01-04 0.016676
2010-01-05 0.003839
...
2010-01-05 0.003839
2010-01-29 0.001248
2010-02-01 0.000134
...
我想要得到的是提取月份最后一天出现在数据中的所有值。
2010-01-29 0.00134
2010-02-28 ......
如果我直接使用 pandas.resample,即 df.resample('M).last()。我会选择索引错误的正确行。 (它会自动使用该月的最后一天作为索引)
2010-01-31 0.00134
2010-02-28 ......
如何以 Pythonic 的方式得到正确答案?
最佳答案
此处假设您的日期数据是索引的一部分。如果没有,我建议先设置它。
单年
我不认为重采样或石斑鱼功能会起作用。让我们改为按月份分组并调用 DataFrameGroupBy.tail
。
df.groupby(df.index.month).tail(1)
多年
如果您的数据跨越多年,您需要按年和月进行分组。使用从 dt.strftime
创建的单个石斑鱼 —
df.groupby(df.index.strftime('%Y-%m')).tail(1)
或者,使用多个石斑鱼——
df.groupby([df.index.year, df.index.month]).tail(1)
注意——如果您的索引不是此处假设的DatetimeIndex
,您需要将df.index
替换为 pd.to_datetime(df.index, errors='coerce')
上面。
关于python - Pandas 获取月底的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50417234/