我有一个数据帧df,如下所示:
ID Date Input
1 1-Nov A,B
1 2-NOV A
2 3-NOV A,B,C
2 4-NOV B,D
我希望我的输出对每个输入的出现进行计数,如果它是连续的,否则再次将其重置为零(如果ID相同则仅计数),因此我的输出将如下所示:
ID Date Input A B C D
1 1-NOV A,B 1 1 0 0
1 2-NOV A 2 0 0 0
2 3-NOV A,B,C 1 1 1 0
2 4-NOV B,D 0 2 0 1
如何创建输出(A,B,C和D),以对输入发生日期和ID进行正确计数。
答案 0 :(得分:2)
使用get_dummies()
转换为伪元素,然后使用cumsum()
和df.mask()
减去0处的总和,最后使用df.assign()
分配df:
m=df['Input'].str.get_dummies(',')
a = m != 0
final=df.assign(**a.cumsum()-a.cumsum().mask(a).ffill().fillna(0).astype(int))
Date Input A B C D
0 1-Nov A,B 1 1 0 0
1 2-NOV A 2 0 0 0
2 3-NOV A,B,C 3 1 1 0
3 4-NOV B,D 0 2 0 1