pandas - 如何使用源 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
我只是想知道有没有更简单的方法来完成这项工作?
解决方案
与按列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
推荐阅读
- android - 当适配器开始侦听时,NestedScrollview 中的 RecyclerView 冻结
- python - 如何为索引列设置标签?
- python - 在 __post_init__ 中更改类型的数据类属性的类型提示
- r - 如何将特定因子水平删除为 r 中的缺失值?
- flutter - 如何在flutter-web中将触摸事件监听器标记为被动?
- java - BST中的搜索操作
- reactjs - reactjs 和 axios:如何确保只有在几次 axios 调用成功后才加载对话框
- vector - 访问和修改向量中元素的不同方法之间的差异
- ssreflect - ssreflect 的“反转”策略:我应该使用什么?
- facebook-opengraph - 在 iOS WhatsApp 中显示链接的打开图元标记