我是新来的编码,你能分享详细的代码吗这是给定的数据,我想在amount列中迭代,每个求和到一个新列是这样的:添加后,所有这些金额应该在新的列中我还必须找到和的最小值和它的日期,和的最大值和它的日期。
实际上我的问题是这样问的
请先应用信用交易来计算某一天的余额。
输入CSV格式:
csv文件中有多个客户id
客户id,日期,金额
输出格式:
CustomerID, MM/YYYY, Min Balance, Max Balance, Ending Balance">
这是解决查询的最佳方法吗?
谢谢
可以使用cumsum
添加累加和列。sum
函数只是将单个列中的所有值相加,因此它不能满足您当前的要求。
所以不是d.['Amounts'].sum()
而是:
d['sum'] = d['Amounts'].cumsum()
.idxmin()
和.idxmax()
函数搜索sum列,分别获取包含最小值和最大值的行的索引。最后,您可以在d
中为这些行建立索引并获取相关的日期。
多个客户
df['sum']=df.groupby(['Date','Customer ID'],as_index=False)['Amount'].cumsum()
df
Out[23]:
Customer ID Date Amount sum
0 C231 11-01-2022 9232 9232
1 C231 11-02-2022 6061 6061
2 C231 11-03-2022 5108 5108
3 C231 11-04-2022 9086 9086
4 C232 11-03-2022 100 100
5 C232 11-03-2022 200 300
客户的最小、最大和总和
df.groupby('Customer ID').agg({'Amount': ['min', 'max','sum']})
Out[25]:
Amount
min max sum
Customer ID
C231 5108 9232 29487
C232 100 200 300
每月按客户划分的最小值、最大值和总和
df.groupby([df.Date.dt.strftime('%b/%Y'),'Customer ID']).agg({'Amount':['min','max','sum']}).reset_index()
Out[111]:
Date Customer ID Amount
min max sum
0 Nov/2022 C231 5108 9232 29487
1 Nov/2022 C232 100 200 300