我有一张Excel工作表,已将其读入熊猫数据框。看起来像:
KEY_FIELD_NAME KEY_FIELD_VAL_ORIG KEY_FIELD_VAL_NEW
NAME XXX YYY
AGE 11 22
INCOME 100 200
NAME ABC DEF
我还有另一个熊猫数据框(df_orig),如下所示:
NAME AGE INCOME
XXX 11 100
ABC 25 300
如何更新df_orig,以便它会通过KEY_FIELD_NAME和KEY_FIELD_VAL_ORIG自动查找excel工作表并更新为新值:
df_orig_want:
NAME AGE INCOME
YYY 22 200
DEF 25 300
答案 0 :(得分:2)
因此,您想使用update
,但是在使用它之前,应该使用pivot
和Google Cloud Platform console,将修改后的数据框调整为与原始DataFrame
相同的形状。原始名称作为索引,以便我们以后可以加入该名称:
df['NAME'] = pd.Series(np.where(df['KEY_FIELD_NAME'] == 'NAME', df['KEY_FIELD_VAL_ORIG'],np.nan)).ffill()
df_piv = df.pivot(index='NAME', columns='KEY_FIELD_NAME', values='KEY_FIELD_VAL_NEW')
print(df_piv)
# KEY_FIELD_NAME AGE INCOME NAME
#NAME
#ABC NaN NaN DEF
#XXX 22 200 YYY
,然后您可以在设置索引后立即调用更新。它就地工作,所以
df_orig.set_index('NAME', drop=False, inplace=True)
df_orig.update(df_piv)
print(df_orig.reset_index(drop=True))
# NAME AGE INCOME
#0 YYY 22 200
#1 DEF 25 300