gpt4 book ai didi

python - 根据两个不同大小的数据帧更新列并更新第一个数据帧中的值。 (python中vlookup的概念)

转载 作者:行者123 更新时间:2023-12-03 08:36:44 24 4
gpt4 key购买 nike

我知道这似乎是一个非常通用且重复的问题,但我无法找到与我的问题最相关的解决方案。

例如,我有以下数据框(df1):

receipt  car     parts
101 A oil
102 B tire
103 B oil
104 C glass

另一个 df2:

product    name    criteria
Valvoline oil winter
Valvoline oil performance
Valvoline oil regular
Goodyear tire regular
Goodyear tire performance
Bosch glass regular

预期的数据帧是:

receipt  car     parts   product
101 A oil Valvoline
102 B tire Goodyear
103 B oil Valvoline
104 C glass Bosch

我确实尝试过合并,但 df1 中的总长度已更改。

data_copy = pd.merge(df1, df2, how= "left", left_on = 'parts', right_on = 'name' )

我正在考虑从 df2 和连接 df1 创建一个唯一的列表。但还有其他优雅的方式吗?

谢谢

最佳答案

试试这个

df['criteria'] = df1.parts.map(df2.drop_duplicates('name')
.set_index('name')['product'])

或者:

df['criteria'] =  df1.parts.map(dict(df2[['name', 'product']].to_numpy()))

Out[216]:
receipt car parts criteria
0 101 A oil Valvoline
1 102 B tire Goodyear
2 103 B oil Valvoline
3 104 C glass Bosch

关于python - 根据两个不同大小的数据帧更新列并更新第一个数据帧中的值。 (python中vlookup的概念),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63692214/

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