分组依据并设置列值

时间:2015-09-02 02:38:46

标签: python pandas

我对pandas DataFrame操作有疑问。 说我有一个数据框

    DF
    A   Date    C
0   1   1-jan   0
1   1   2-jan   1
2   1   3-jan   0
3   2   4-jan   0
4   2   5-jan   0
5   2   6-jan   1
6   3   7-jan   1
7   3   8-jan   0
8   3   9-jan   0

如果我们假设A列是account_ids,那么我想要做的是,对于每个帐户,如果我们已经在该C列中观察到1直到该日期(基于Date列),则将C列值设置为1 。 例如,对于帐号1,我将在1月2日之后使C列中的所有值等于1。对于帐号3,所有C列值在1月7日之后将为1。

    Output
   A    Date    C
0   1   1-jan   0
1   1   2-jan   1
2   1   3-jan   1
3   2   4-jan   0
4   2   5-jan   0
5   2   6-jan   1
6   3   7-jan   1
7   3   8-jan   1
8   3   9-jan   1

1 个答案:

答案 0 :(得分:2)

df['C'] = df['C'].replace(0 , np.nan)
df['C'] = df.groupby('A')['C'].fillna(method = 'ffill').fillna(0)



Out[14]:
    A   Date    C
0   1   1-jan   0
1   1   2-jan   1
2   1   3-jan   1
3   2   4-jan   0
4   2   5-jan   0
5   2   6-jan   1
6   3   7-jan   1
7   3   8-jan   1
8   3   9-jan   1