gpt4 book ai didi

python - 将一个数据帧的列乘以另一个数据帧的值,由键确定

转载 作者:行者123 更新时间:2023-12-05 06:23:04 26 4
gpt4 key购买 nike

我想获取一个包含大约 26,000 行的大型数据框 foodList,并将列 foodList['food_quant'] 乘以数据框 foodConversions 中的某个值。要从 foodConversions 确定此值,另一列 foodList['food_name'] 有一个字符串,该字符串对应于 foodConversions 的索引。我这样做是为了将不同食物的克数转换为卡路里,并且每种食物类型都有不同数量的卡路里。

我试过使用嵌套循环来遍历 foodConversions 中的每个值,看看它是否等于 foodList['food_name'],但速度非常慢,而且由于某种原因从未真正完成运行;因此,我宁愿放弃这种方法。我也尝试过使用 applymap 和 lambda 函数,但我认为我没有做对。最后,我尝试使用另一个 stackoverflow 问题中概述的方法,但我不确定如何将它应用到我的情况,或者它是否适用于我的情况。这是它的链接:Multiply dataframe with values from other dataframe

这是两个数据框:

foodConversions = pd.Dataframe([2,3], index=['meat','vegetables'], columns=['cal/gram'])
            cal/gram
meat 2
vegetables 3
foodList = pd.Dataframe([['meat',40]['meat',30]['vegetables',20]['meat',10]], columns=['food_name','food_quant'])
    food_name    food_quant
0 meat 40
1 meat 30
2 vegetables 20
3 meat 10

输出应该是这样的:

    food_name    food_quant
0 meat 80
1 meat 60
2 vegetables 60
3 meat 20

希望这是有道理的,我尽量做到尽可能全面,所以对于冗长的解释,我深表歉意。谢谢大家的帮助!

最佳答案

我们可以做 reindexlocmapmerge

重新索引|loc

df2.assign(food_quant=df2.food_quant*(df1['cal/gram'].reindex(df2.food_name).values))# change reindex to loc
Out[121]:
food_name food_quant
0 meat 80
1 meat 60
2 vegetables 60
3 meat 20

map |替换

df2.assign(food_quant=df2.food_quant*df2.food_name.map(df1['cal/gram']))
df2.assign(food_quant=df2.food_quant*df2.food_name.replace(df1['cal/gram']))

关于python - 将一个数据帧的列乘以另一个数据帧的值,由键确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686646/

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