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條經驗 獲得超8個贊
您可以應用累積最大值,它可以轉發每列的“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
添加回答
舉報