熊猫通过从另一个数据框中查找列名和值来更新数据框

时间:2019-02-26 19:53:29

标签: pandas

我有一张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

1 个答案:

答案 0 :(得分:2)

因此,您想使用update,但是在使用它之前,应该使用pivotGoogle 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