Python pandas ValueError:尝试基于另一个df的值进行计算时,无法从重复轴重新索引
我有两个Python pandas ValueError:尝试基于另一个df的值进行计算时,无法从重复轴重新索引,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有两个dfs: df2 dec_pl cur_key 0 JPY 1 HKD df1 cur amount JPY 80 HKD 20 USD 70 我喜欢参考df2中的del_pl作为df1中的“cur”,并计算df1.converted_amount=df1.amount*10**(2-df2.dec_pl)作为df1;i、 例如df1.amount乘以10乘以(2-df2.dec\u pl)的幂,如果在df1.cur中找不
df
s:
df2
dec_pl cur_key
0 JPY
1 HKD
df1
cur amount
JPY 80
HKD 20
USD 70
我喜欢参考df2
中的del_pl
作为df1
中的“cur”,并计算df1.converted_amount=df1.amount*10**(2-df2.dec_pl)
作为df1
;i、 例如df1.amount
乘以10乘以(2-df2.dec\u pl)
的幂,如果在df1.cur
中找不到相应的df2.cur\u键,例如USD
,则使用其金额
df1 = df1.set_index('cur')
df2 = df2.set_index('cur_key')
df1['converted_amount'] = (df1.amount*10**(2 - df2.dec_pl)).fillna(df1['amount'], downcast='infer')
但是我有
ValueError: cannot reindex from a duplicate axis
我想知道最好的方法是什么,所以结果应该是这样的
df1
cur amount converted_amount
JPY 80 8000
HKD 20 200
USD 70 70
在cur_key
列中,可能存在重复的问题,如:
print (df2)
dec_pl cur_key
0 0 HKD
1 1 HKD
df1 = df1.set_index('cur')
解决方案是唯一cur_key
的聚合副本-例如,通过sum
:
df2 = df2.groupby('cur_key').sum()
或删除重复项-根据当前键仅保留第一个或最后一个值:
#first default value
df2 = df2.drop_duplicates('cur_key').set_index('cur_key')
#last value
#df2 = df2.drop_duplicates('cur_key', keep='last').set_index('cur_key')
df1['converted_amount'] = (df1.amount*10**(2 - df2.dec_pl)).fillna(df1['amount'], downcast='infer')
print (df1)
amount converted_amount
cur
JPY 80 80
HKD 20 200
USD 70 70