我有一个数据框,它计算客户在某个特定月份账户中的美元金额。如果客户没有钱,金额就是0。数据帧如下所示:
A B C D E F
11/30/2015 0 1000 0 0 5000 0
12/31/2015 2000 1000 0 3000 5000 2000
1/31/2016 2000 0 0 3000 5000 2000
2/29/2016 2000 2000 4000 3000 5000 2000
3/31/2016 2000 2000 4000 0 10000 2000
4/30/2016 0 2000 4000 0 10000 0
5/31/2016 0 2000 4000 0 10000 0
当客户第一次上线时,他们会从0变为某个月的名义金额(或者从11月的名义金额开始)。因此,当一个特定的客户有他们的第一个名义金额,这是一个月,他们是“新的”。你知道吗
我想在数据帧的末尾添加一列,对“新”客户的金额求和。你知道吗
我已经能够计算“新”客户的数量(见下面的代码),但是我不能改变代码来求和。你知道吗
def new_customer(column):
return column[-1] and not any(column[:-1])
table['new_loans'] = table.iloc[:, len(table.columns)].expanding().apply(new_customer).sum(axis=1).astype(int)
生成的数据帧应如下所示:
A B C D E F New_Customers
11/30/2015 0 1000 0 0 5000 0 6000
12/31/2015 2000 1000 0 3000 5000 2000 7000
1/31/2016 2000 0 0 3000 5000 2000 0
2/29/2016 2000 2000 4000 3000 5000 2000 4000
3/31/2016 2000 2000 4000 0 10000 2000 0
4/30/2016 0 2000 4000 0 10000 0 0
5/31/2016 0 2000 4000 0 10000 0 0
用途:
解释:
首先比较^{} (
!=
)和0
:由^{} 得到的布尔掩码的累计和:
通过}
1
与^{(==)
-第一个1
比较:通过^{} 将值重设为
NaN
s:每列的最后
sum
:相关问题 更多 >
编程相关推荐