我有这个df:
ID | 一个 |
---|---|
1 | 40 |
1 | 0 |
2 | 60 |
2 | 60 |
3 | 0 |
3 | 30 |
我需要添加一个新列来指示每个 id 是否在新列中有两个值,如下所示:
ID | 一个 | 乙 |
---|---|---|
1 | 40 | 1 |
1 | 0 | 1 |
2 | 60 | 2 |
2 | 60 | 2 |
3 | 0 | 1 |
3 | 30 | 1 |
我试过了,但它没有返回正确的值
df= pd.concat(g for _, g in df.groupby('ID') if len(g) > 1)
df= df[df['A'] != 0]
df= pd.concat(g for _, g in df.groupby('A') if len(g) > 1)
df['B'] = 2
使用 groupby 对每个 ID 取大于 0 的值的计数,然后与原始 df 合并
df.merge(df[df['A'] > 0].groupby('ID').size().reset_index(name='count'), on='ID')
ID A count
0 1 40 1
1 1 0 1
2 2 60 2
3 2 60 2
4 3 0 1
5 3 30 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句