大佬教程收集整理的这篇文章主要介绍了需要统计下个月第15天到第15天的操作总和,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要对自每月第 15 天以来每个时期的浮动日期的值求和,例如。 15.10-14.11、15.11-14.12 等,按每对 ID
-dp_ID
分组。
我的df
:
date ID dp value
2020-11-13 300000 002 500,00
2020-11-14 352575 001 400,00
2020-11-15 352575 001 100,00
2020-11-16 352575 001 500,00
...............................
`days from 17.11-12.14`
...............................
2020-12-15 300000 002 700,00
2020-12-16 352575 001 200,00
2020-12-17 352575 001 500,00
2020-12-18 352575 002 600,00
预期输出表,但不是严格的变体: 如何在输出中标记这个时期并不重要 对于前 2020-11-01 可能意味着 15.10-14.11
period ID dp value
2020-11-01 300000 002 500,00
2020-11-01 352575 001 400,00
2021-11-01 352575 002 1000,00
2020-12-01 300000 002 700,00
2020-12-01 352575 001 700,00
2020-12-01 352575 002 600,00
...............................
我已经尝试通过石斑鱼方法解决问题,但对我不起作用
def grouper(X):
d = x.rename('date').to_frame().reset_index()
return d.groupby(pd.Grouper(key='date',freq='M',origin='start')).cumsum()
df['sum'] = df.groupby(['ID','dp'])['date'].transform(grouper)
IIUC,这是另一种选择:
df['custom_period'] = (df.index.day == 15 - 1).cumsum() # Begin on every 15th
df['value'] = df.groupby(['custom_period','id','dp'])['value'].transform('cumsum')
df.drop('custom_period',axis=1,inplace=TruE)
输出:
id dp value
date
2020-11-13 300000 2 500
2020-11-14 352575 1 400
2020-11-15 352575 1 500
2020-11-16 352575 1 1000
2020-12-15 300000 2 700
2020-12-16 352575 1 1200
2020-12-17 352575 1 1700
2020-12-18 352575 2 600
,
首先,您需要创建一个包含年份和月份的列。年份和月份必须基于每月的 15 日至 14 日。从 15 日到 31 日的任何值都应属于下个月。为此,请使用 pd.DateOffset(months=1)
将值增加到下个月。您可以使用 df.date.dt.day
获取日期的日期部分。检查它是否大于 14
。如果是,则将月份移动 1。
既然您在另一列中有了年月,请使用它来分组。如果您希望每一行都有值,请使用 groupby.transform()。如果您只需要摘要,请使用 .sum()。
这是获取每行总和的代码。
c = ['date','dp','value']
d = [['2020-11-13',300000,'002',500.00],['2020-11-14',352575,'001',400.00],['2020-11-15',100.00],['2020-11-16',['2020-12-15',700.00],['2020-12-16',200.00],['2020-12-17',['2020-12-18',600.00]]
import pandas as pd
df = pd.DataFrame(d,columns=C)
df['date'] = pd.to_datetiR_804_11845@e(df['date'])
df['Year-Mon'] = df.date.dt.strftime('%Y-%m')
#
df.loc[df.date.dt.day > 14,'Year-Mon'] = (df.date + pd.DateOffset(months=1)).dt.strftime('%Y-%m')
df['sum'] = df.groupby(['id','Year-Mon'])['value'].transform('sum')
print (df)
输出结果为:
date id dp value Year-Mon sum
0 2020-11-13 300000 002 500.0 2020-11 500.0
1 2020-11-14 352575 001 400.0 2020-11 400.0
2 2020-11-15 352575 001 100.0 2020-12 600.0
3 2020-11-16 352575 001 500.0 2020-12 600.0
4 2020-12-15 300000 002 700.0 2021-01 700.0
5 2020-12-16 352575 001 200.0 2021-01 700.0
6 2020-12-17 352575 001 500.0 2021-01 700.0
7 2020-12-18 352575 002 600.0 2021-01 600.0
以上是大佬教程为你收集整理的需要统计下个月第15天到第15天的操作总和全部内容,希望文章能够帮你解决需要统计下个月第15天到第15天的操作总和所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。