gpt4 book ai didi

python - 如何根据条件从另一个数据框中仅替换某些列值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:52:17 24 4
gpt4 key购买 nike

我在 pandas(python) 中有两个 DataFrame

df1
UniqueKey ValueFix ValueChange
A 10 100
B 15 0
C 20 150
D 15 0
E 10 100

df2
UniqueKey ValueFix ValueChange
B 15 300
D 15 400

我想根据 df2 中的值更新 df1,但仅更新“值更改”列中的值。因为实际上我不应该更新不在 df2 中的行。我怎样才能做到这一点?我迷路了。所以我想要的结果是:

UniqueKey ValueFix ValueChange
A 10 100
B 15 300
C 20 150
D 15 400
E 10 100

在我看来,唯一的解决方案是我展示以某种方式使用 UniqueKey-ValuChange 将 df2 转换为字典with 循环通过 df1 中的 ValueChange,条件类似于“如果字典中的行[Value_change],则替换为字典中的值”。

但我不知道如何用 pandas 做到这一点

最佳答案

您可以使用 numpy where以这种方式更新您的专栏:

import pandas as pd    
import numpy as np

df1 = pd.DataFrame({'UniqueKey': ['A', 'B','C','D','E'], 'ValueFix': [10,15,20,15,10], 'ValueChange': [100,0,150,0,100]})
df2 = pd.DataFrame({'UniqueKey': ['B', 'D'], 'ValueFix': [15,15], 'ValueChange': [300,400]})

merged_df = df1.merge(df2, on='UniqueKey', how='left')
df1.ValueChange = np.where(df1.UniqueKey.isin(df2.UniqueKey), merged_df.ValueChange_y, merged_df.ValueChange_x)

输出为

print(df1)
UniqueKey ValueFix ValueChange
0 A 10 100.0
1 B 15 300.0
2 C 20 150.0
3 D 15 400.0
4 E 10 100.0

关于python - 如何根据条件从另一个数据框中仅替换某些列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com