python - Pandas 从系列中获取月末值

标签 python pandas

我需要从一系列条目中获取月末余额。

示例数据:

           date     contrib   totalShrs
0    2009-04-23     5220.00   10000.000
1    2009-04-24    10210.00   20000.000
2    2009-04-27    16710.00   30000.000
3    2009-04-30    22610.00   40000.000
4    2009-05-05    28909.00   50000.000
5    2009-05-20    38409.00   60000.000
6    2009-05-28    46508.00   70000.000
7    2009-05-29    56308.00   80000.000
8    2009-06-01    66108.00   90000.000
9    2009-06-02    78108.00  100000.000
10   2009-06-12    86606.00  110000.000
11   2009-08-03    95606.00  120000.000

输出看起来像这样:

2009-04-30   40000
2009-05-31   80000
2009-06-30  110000 
2009-07-31  110000  
2009-08-31  120000

有没有简单的 Pandas 方法?

我不知道如何使用 groupby 之类的东西来做到这一点?

或者我是否必须执行类似 iterrows 的操作,找到所有每月条目,按日期排序并选择最后一个?

谢谢。

最佳答案

使用GrouperGroupBy.last ,通过 ffill 使用 Series.reset_index 向前填充缺失值:

#if necessary
#df['date'] = pd.to_datetime(df['date'])

df = df.groupby(pd.Grouper(freq='m',key='date'))['totalShrs'].last().ffill().reset_index()
#alternative
#df = df.resample('m',on='date')['totalShrs'].last().ffill().reset_index()
print (df)
        date  totalShrs
0 2009-04-30    40000.0
1 2009-05-31    80000.0
2 2009-06-30   110000.0
3 2009-07-31   110000.0
4 2009-08-31   120000.0

关于python - Pandas 从系列中获取月末值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672586/

相关文章:

python - 生成任意 2 列的所有二次组合

python - 带有 pandas 的多个堆叠条形图

python - 如何将pandas数据帧转换为具有rdd属性的pyspark数据帧?

python - 加快将多个 csv 导入 python dataframe 的过程

Windows 上的 python joblib Parallel 即使添加了 "if __name__ == ' __main_ _':"也无法正常工作

python - 测量外部程序使用的耗时、内存量和 CPU

python - 如何提取特定类别之前的最后 3 个索引号

python - 访问 zip 中的数据 - 索引超出范围 - Python

python - 如何在 MYSQL Workbench 中制作一个简单的脚本来执行查询并将结果导出到 CSV

Python随机和int转字符串问题