2 回答
TA贡献2036条经验 获得超8个赞
通过定义自定义new函数并使用DataFrame.expanding. 我不确定为什么expanding().apply(new)需要从floatto转换的结果int,但是嘿,它有效:
def new(column):
return column[-1] and not any(column[:-1])
result = df.expanding().apply(new).sum(axis=1).astype(int)
print(result)
Out:
11/30/2015 4
12/31/2015 3
1/31/2016 0
2/29/2016 3
3/31/2016 0
4/30/2016 0
5/31/2016 0
dtype: int32
TA贡献2039条经验 获得超7个赞
您可以应用累积最大值,它可以转发每列的“1”并对轴 1 中的所有列求和并计算差异。第一个值由 null 给出,您可以通过对第一行求和来填充
df1 = df[df.columns.difference(['Customer'])]
df['New_customers'] = df1.cummax().sum(1).diff().fillna(df1.loc[0].sum())
出去:
Customer A B C D E F G H I J New_customers
0 11/30/2015 1 0 1 0 0 1 1 0 0 0 4.0
1 12/31/2015 0 1 0 1 0 1 1 0 0 1 3.0
2 1/31/2016 0 0 0 0 0 1 1 0 0 1 0.0
3 2/29/2016 1 1 1 1 1 1 0 1 1 1 3.0
4 3/31/2016 1 1 0 1 1 0 1 1 0 1 0.0
5 4/30/2016 0 1 1 1 0 1 1 1 0 1 0.0
6 5/31/2016 1 1 1 1 1 1 0 1 0 1 0.0
添加回答
举报