我有一个数据框,其中包含特定列中特定值的多次出现。我想通过在新列中添加某种引用来设置这些值的唯一性。例如,假设我有一个带有 ID 列的数据框:
ID
7 2035200584
8 2035200584
9 2035200584
31 2038128459
32 2038128459
33 2038128459
42 2053561908
43 2053561908
44 2053561908
我想创建一个新列,例如“newID”,它看起来像这样:
ID
7 2035200584_1
8 2035200584_2
9 2035200584_3
31 2038128459_1
32 2038128459_2
33 2038128459_3
42 2053561908_1
43 2053561908_2
44 2053561908_3
我尝试过使用groupby机制,但没有成功。使用简单的应用机制是可以的,但似乎有点麻烦(我需要保留一个包含每个 ID 的出现计数器的字典)
有没有一种简单有效的方法来做到这一点,而我却缺少这种方法?
最佳答案
以下是 DSM 解决方案的细微变化:
import pandas as pd
import io
content = io.BytesIO('''index ID
7 2035200584
8 2035200584
9 2035200584
31 2038128459
32 2038128459
33 2038128459
42 2053561908
43 2053561908
44 2053561908''')
df = pd.read_table(content, sep='\s+', header=0)
df['ID'] = df.groupby('ID')['ID'].transform(
lambda x: map('{:.0f}_{:.0f}'.format, x, x.rank('first')))
print(df)
产量
index ID
0 7 2035200584_1
1 8 2035200584_2
2 9 2035200584_3
3 31 2038128459_1
4 32 2038128459_2
5 33 2038128459_3
6 42 2053561908_1
7 43 2053561908_2
8 44 2053561908_3
关于python - 计算值并在新的数据框列中添加引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345256/