我有数据框
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
我该如何解决?
答案 0 :(得分:2)
使用处理重复索引的mask
或numpy.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
答案 1 :(得分:2)
试试这个:
mask = df.reg_region == df.live_region
df.loc[mask, 'city_reg'] = df.loc[mask, 'city_live']
# city_reg city_live reg_region live_region
# 0 Moscow Tver 77 69
# 1 Tumen' Tumen' 86 86
这样做的原因是当您应用相同的蒙版时,索引在分配的左侧和右侧之间对齐。