基于另一列生成新列

七月

使用数据框:

df = pd.DataFrame({"ID": [1, 1, 1,1,2,2, 2, 2,3,3,3,3] ,"year": [2004, 2005, 2006, 2007, 2004, 2005, 2006, 2007,2004, 2005, 2006, 2007], "dummy": [0,1,1,0,1,1,0,0,0,0,0,0]})

ID  year  dummy 
1   2004   0
1   2005   1
1   2006   1
1   2007   0
2   2004   1
2   2005   1
2   2006   0
2   2007   0
3   2004   0
3   2005   0
3   2006   0
3   2007   0

我想生成一个新列:'dummy1' from 'dummy' column

ID  year  dummy  dummy1
1   2004   0       0
1   2005   1       1
1   2006   1       0
1   2007   0       0
2   2004   1       1
2   2005   1       0
2   2006   0       0
2   2007   0       0
3   2004   0       0
3   2005   0       0
3   2006   0       0
3   2007   0       0

如果我使用:

df['dummy1'] = df["dummy"].replace({"1": "0"}, inplace=False)

它将所有的 1 替换为 0。如何修改代码以仅将每个 ID 的第二个 1 替换为 0?

七月
df['dum'] = df.groupby('ID')['dummy'].cummax()

然后,

conditions = [
    (df['dum']== 0),
    (df['dum']== 1)
    ]
values = [0, (df.index == df.groupby('ID').dummy.transform('idxmax')).astype(int)]
df['dummy1'] = np.select(conditions, values)

ID  year  dummy  dummy1
1   2004   0       0
1   2005   1       1
1   2006   1       0
1   2007   0       0
2   2004   1       1
2   2005   1       0
2   2006   0       0
2   2007   0       0
3   2004   0       0
3   2005   0       0
3   2006   0       0
3   2007   0       0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章