1

我有兴趣将值分配给 Pandas 数据框中的重复行,如下所示。数据框如下: -

data_1 = {'ID': ['001', '003', '001','002','002','002'], 'Name': ["XX1", "XX3", "XX1", "XX2", "XX2", "XX2"]} 
df = pd.DataFrame(data_1)  

输出应该与 df2 的输出相关。

output = {'ID': ['001', '003', '001','002','002','002'], 'Name': ["XX1", "XX3", "XX1", "XX2", "XX2", "XX2"],"Number": [1, 1, 2, 1, 2,3]} 
df2 = pd.DataFrame(output)  

如何在重复的“ID”上自动增加“数字”?

4

2 回答 2

0

根据@Barmar 的回复,这似乎已经回答了。更多细节可以在这里找到

df["rank"] = df.groupby("ID").rank("first", ascending=False)
于 2021-10-04T22:16:31.307 回答
0

您可以使用groupby+ cumcount(加 1,因为计数从 0 开始):

df['Number'] = df.groupby('ID').cumcount().add(1)

输出:

    ID Name  Number
0  001  XX1       1
1  003  XX3       1
2  001  XX1       2
3  002  XX2       1
4  002  XX2       2
5  002  XX2       3
于 2021-10-04T22:18:37.443 回答