按ID和日期

时间:2019-11-15 10:36:17

标签: python pandas dataframe matrix metadata

我有一个数据帧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进行正确计数。

1 个答案:

答案 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