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