使用列中的值重新命名pandas数据帧,同时考虑重复

时间:2017-09-06 14:30:11

标签: python pandas dataframe indexing

我有一个数据框df

df
 Name 
0   A
1   A
2   B
3   B
4   C
5   D
6   E
7   F
8   G
9   H

如何重命名数据框的构思以便

df
 Name 
0_A   A
1_A   A
0_B   B
1_B   B
0_C   C
0_D   D
0_E   E
0_F   F
0_G   G
0_H   H

基本上我想使用列中的值" Name"并在每次值改变时重新开始编号..

1 个答案:

答案 0 :(得分:2)

使用cumcount计数,更多可能的连接解决方​​案在previous answer中:

print (df.groupby('Name').cumcount().astype(str))
0    0
1    1
2    0
3    1
4    0
5    0
6    0
7    0
8    0
9    0
dtype: object

df.index = df.groupby('Name').cumcount().astype(str) + '_' + df['Name']
print (df)
    Name
0_A    A
1_A    A
0_B    B
1_B    B
0_C    C
0_D    D
0_E    E
0_F    F
0_G    G
0_H    H