我有一个像这样的数据框:
ID Price
000afb96ded6677c 1514.5
000afb96ded6677c 13.0
000afb96ded6677c 611.0
000afb96ded6677c 723.0
000afb96ded6677c 2065.0
ffea14e87a4e1269 2286.0
ffea14e87a4e1269 1150.0
ffea14e87a4e1269 80.0
fff455057ad492da 650.0
fff5fc66c1fd66c2 450.0
我需要一个从 1 迭代到任意多行的 ID 列,但我需要它像下面的代码一样:
ID Price ID 2
000afb96ded6677c 1514.5 1
000afb96ded6677c 13.0 1
000afb96ded6677c 611.0 1
000afb96ded6677c 723.0 1
000afb96ded6677c 2065.0 1
ffea14e87a4e1269 2286.0 2
ffea14e87a4e1269 1150.0 2
ffea14e87a4e1269 80.0 2
fff455057ad492da 650.0 3
fff5fc66c1fd66c2 450.0 4
Try groupby ngroup https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.GroupBy.ngroup.html#pandas-core-groupby-groupby-ngroup + 1 :
df['ID_2'] = df.groupby('ID').ngroup() + 1
Or with Rank https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.rank.html#pandas-series-rank:
df['ID_2'] = df['ID'].rank(method='dense').astype(int)
Or with pd.factorize https://pandas.pydata.org/pandas-docs/dev/reference/api/pandas.factorize.html:
df['ID_2'] = pd.factorize(df['ID'])[0] + 1
df
:
ID Price ID_2
0 000afb96ded6677c 1514.5 1
1 000afb96ded6677c 13.0 1
2 000afb96ded6677c 611.0 1
3 000afb96ded6677c 723.0 1
4 000afb96ded6677c 2065.0 1
5 ffea14e87a4e1269 2286.0 2
6 ffea14e87a4e1269 1150.0 2
7 ffea14e87a4e1269 80.0 2
8 fff455057ad492da 650.0 3
9 fff5fc66c1fd66c2 450.0 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)