python - Pandas 获取月底的数据?

标签 python pandas dataframe

数据给出如下:

             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.tai​​l

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/

相关文章:

Python:每小时删除具有最大值的行

r - 使用 grep 对数据框进行子集化

python - 当列名与 Pandas 的数据内联时,如何读取 .txt 文件?

python - Pandas - 使用自定义百分位数切割记录

Python时区解析

python - pygame中的落沙,每次按下鼠标按钮时都会创建并掉落粒子

python - 使用 pandas 系列元素作为边界的简洁/优雅集成

python - 如何使用 pandas 中的另一列更新一列

python - Apache SuperSet 中的 Oauth 身份验证

python - PyCharm,Django : zero code coverage