我有一个包含3列的数据框。如果列值再次达到1,我想将子集分配到数据帧的子集,并将其标记为1观察并继续直到文件末尾。
数据帧:
colA colB colC
a12 3 1
c45 4 0
d36 4 0
e97 5 0
h65 3 1
k67 3 1
l54 5 0
所以我应该能够将3个观察值作为[a12,c45,d36.e97],[h65],[k67,l54]
进行子集化并将其传递给另一个只有列名称的数据帧,并将此处的值标记为1,将0设置为ML算法。
我试图拉动模式但收到错误:
系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()
答案 0 :(得分:1)
您可以将cumsum
与colC一起使用,然后将该结果用作组密钥
df.colC.cumsum()
Out[282]:
0 1
1 1
2 1
3 1
4 2
5 3
6 3
Name: colC, dtype: int64
df.groupby(df.colC.cumsum()).colA.apply(list)
Out[284]:
colC
1 [a12, c45, d36, e97]
2 [h65]
3 [k67, l54]
Name: colA, dtype: object