用dataframe中的第一个值替换重复项

2024-09-27 04:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

df

ITEM      CATEGORY       COLOR

48684      CAR           RED
54519      BIKE          BLACK
14582      CAR           BLACK
45685      JEEP          WHITE
23661      BIKE          BLUE
23226      BIKE          BLUE
54252      BIKE          BLACK

df.loc[df.duplicated(['CATEGORY', 'COLOR','ITEM']), 'ITEM'] = 'ITEM'没有提供所需的输出。我需要下面的输出a

ITEM      CATEGORY       COLOR

48684      CAR           RED
54519      BIKE          BLACK
14582      CAR           BLACK
45685      JEEP          WHITE
23661      BIKE          BLUE
23661      BIKE          BLUE
54519      BIKE          BLACK

如果CATEGORYCOLOR相同,则应使用第一个值替换ITEM


Tags: dfbluereditemcarloccolorblack
1条回答
网友
1楼 · 发布于 2024-09-27 04:16:37

通过所有值将^{}^{}一起使用:

df['ITEM'] = df.groupby(['CATEGORY', 'COLOR'])['ITEM'].transform('first')

print (df)
    ITEM CATEGORY  COLOR
0  48684      CAR    RED
1  54519     BIKE  BLACK
2  14582      CAR  BLACK
3  45685     JEEP  WHITE
4  23661     BIKE   BLUE
5  23661     BIKE   BLUE
6  54519     BIKE  BLACK

如果希望仅复制筛选器以提高性能(如果是更唯一的行和更少的副本),请将^{}添加到带有keep=False的2列中,并仅将groupby应用于通过^{}筛选的行,同时将ITEM分配给筛选列:

m = df.duplicated(['CATEGORY', 'COLOR'], keep=False)
df.loc[m, 'ITEM'] = df[m].groupby(['CATEGORY', 'COLOR'])['ITEM'].transform('first')

相关问题 更多 >

    热门问题