我有数据框

city_reg     city_live   reg_region    live_region
 Moscow         Tver        77            69
 Tambov         Tumen'      86            86


如果city_reg,我需要将city_live中的值替换为reg_region == live_region中的值

我尝试使用

df.loc[df.reg_region == df.live_region, 'city_reg'] = df['city_live']


但它返回

ValueError: cannot reindex from a duplicate axis


我该如何解决?

最佳答案

使用masknumpy.where可以很好地处理重复索引:

#create duplicated indices for test
df.index = [0,0]
print (df)
  city_reg city_live  reg_region  live_region
0   Moscow      Tver          77           69
0   Tambov    Tumen'          86           86

df['city_reg'] = df['city_reg'].mask(df.reg_region == df.live_region,  df['city_live'])


要么:

df['city_reg'] = np.where(df.reg_region == df.live_region,  df['city_reg'], df['city_live'])




print (df)
  city_reg city_live  reg_region  live_region
0   Moscow      Tver          77           69
0   Tumen'    Tumen'          86           86

关于python - Pandas :用条件替换列中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48869292/

10-11 18:10