如何在R中按日期分组计算金额总和并生成新DataFrame
实现方法建议
核心思路
先给每一行标记对应的归属日期,再按日期分组求和,最后整理成目标结构的DataFrame。
基于Pandas的具体实现代码
import pandas as pd # 初始化你的原始DataFrame(如果已有可跳过这步) df = pd.DataFrame({ 'permitnum': ['6/1/2022', 'ascas', 'olic', '6/2/2022', 'avrey', 'fev', 'grey'], 'amount': [pd.NA, 30.00, 40.41, pd.NA, 17.32, 32.18, 12.20] }) # 1. 为每行标记对应的日期:识别日期行并向下填充 df['归属日期'] = df.apply( lambda row: row['permitnum'] if pd.isna(row['amount']) else pd.NA, axis=1 ).ffill() # 2. 过滤无效的日期行,按日期分组求和 result_df = df[~pd.isna(df['amount'])].groupby('归属日期')['amount'].sum().reset_index() # 3. 重命名列名匹配需求 result_df.columns = ['日期', '总金额'] print(result_df)
代码说明
ffill():把识别到的日期值向下填充,让后续的金额行都关联到对应的日期~pd.isna(df['amount']):过滤掉原始的日期行(这类行的amount为空,无需参与求和)groupby+sum:按归属日期对金额做聚合求和,reset_index()把分组结果转为标准DataFrame
运行后输出结果:
| 日期 | 总金额 |
|---|---|
| 6/1/2022 | 70.41 |
| 6/2/2022 | 61.70 |
内容的提问来源于stack exchange,提问作者user20412105
相关产品推荐
相关产品推荐

