2 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
通過定義自定義new函數(shù)并使用DataFrame.expanding. 我不確定為什么expanding().apply(new)需要從floatto轉(zhuǎn)換的結(jié)果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貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以應(yīng)用累積最大值,它可以轉(zhuǎn)發(fā)每列的“1”并對(duì)軸 1 中的所有列求和并計(jì)算差異。第一個(gè)值由 null 給出,您可以通過對(duì)第一行求和來填充
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
添加回答
舉報(bào)