首页 > 解决方案 > 如何使用源 DataFrame 中满足条件的值更新目标 DataFrame?

问题描述

这是我的源数据框

df = pd.DataFrame({'uid': [1, 2, 3, 5, 6],
    'grades': [69.233627, 70.130900, 83.357011, 88.206387, 74.342212]})

这是我的目标数据框

df2 = pd.DataFrame({'uid': [1, 2, 9],
                    'grades': [0.0,0.0,0.0]})

我正在尝试使用源 DataFrame 中满足条件的值更新目标 DataFrame。

for i in df2['uid']:
    if (len(df[df['uid']==i])>0):
        df2.loc[df2['uid']==i, 'grades']=df.loc[df['uid']==i, 'grades']

我有我需要的

>>> df2
uid grades
0   1   69.233627
1   2   70.130900
2   9   0.000000

我只是想知道有没有更简单的方法来完成这项工作?

标签: pandas

解决方案


与按列DataFrame.update设置两个索引一起使用:uid

df = df.set_index('uid')
df2 = df2.set_index('uid')

df2.update(df)
df2 = df2.reset_index()
print (df2)
   uid     grades
0    1  69.233627
1    2  70.130900
2    9   0.000000

推荐阅读