我有一些数据帧:
df = pd.DataFrame({'fruit': ['apple', 'apple', 'apple', 'apple', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange'],
'distance': [10, 0, 20, 40, 20, 50 ,70, 90, 110, 130]})
df
fruit distance
0 apple 10
1 apple 0
2 apple 20
3 apple 40
4 orange 20
5 orange 50
6 orange 70
7 orange 90
8 orange 110
9 orange 130
我想为每个按距离排序的组成员添加一个唯一 ID,如下所示:
fruit distance ID
0 apple 10 apple_2
1 apple 0 apple_1
2 apple 20 apple_3
3 apple 40 apple_4
4 orange 20 orange_1
5 orange 50 orange_2
6 orange 70 orange_3
7 orange 130 orange_6
8 orange 110 orange_5
9 orange 90 orange_4
我对排序/分组/循环的努力尚未成功。
最佳答案
使用 pandas.DataFrame.groupby.rank
:
df['ID'] = df['fruit'] + "_" + df.groupby("fruit")["distance"].rank().astype(int).astype(str)
print(df)
输出:
fruit distance ID
0 apple 10 apple_2
1 apple 0 apple_1
2 apple 20 apple_3
3 apple 40 apple_4
4 orange 20 orange_1
5 orange 50 orange_2
6 orange 70 orange_3
7 orange 90 orange_4
8 orange 110 orange_5
9 orange 130 orange_6
关于python - Groupby 并为组成员分配唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59796922/