gpt4 book ai didi

python - 如何对包含链接到 Python 中另一个数据框中的值的元素的数据框行执行操作?

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:21 25 4
gpt4 key购买 nike

我有两个数据框 DFDF2和一个列表 List1 .为了简单起见,我将使用示例输入。 DFDF2包含 List1 中的元素. DF这些元素随机排列,其中有一些 NaN值和 DF2 ,这些元素与一个数字相关联。这就是我打算做的:
1.遍历List1并选择 DF 中的行其中具有来自 List1 的特定元素(我已经这样做了)
2. 在每一行中,执行与行中字符串相关联的值的乘法(位于 DF2 中)

第 2 部分让我困惑了很长一段时间。我想到了不同的事情,但我根本不知道算法。我无法链接 DF 中的字符串以及它们在 DF2 中的值.请帮忙!

List1=['Apple','Orange','Banana','Pineapple','Pear','Tomato','Potato']
Sample DF
EQ1 EQ2 EQ3
0 Apple Orange NaN
1 Banana Potato NaN
2 Pear Tomato Pineapple
3 Apple Tomato Pear
4 Tomato Potato Banana

DF2
Name Value
Apple 3.21
Orange 4.32
Banana 5.22
Pineapple 0.01
Pear 4.89
Tomato 7.55
Potato 6.49

执行第 2 部分:例如,如果我选择包含元素 Banana 的行,要访问的第一行是Banana Potato NaN .现在Banana5.22 有关和 Potato6.49 有关在 DF2 .我想暂时将所选字符串(在本例中为 Banana)的值更改为 1,然后我希望将它们相乘。 (在这种情况下为 1*6.49)。当然NaN不应包含在其中。还有 DF 的列数(行的长度)并不总是 3(如图所示)。它是一个变量。由于我使用的是循环,因此应该对 List1 的所有元素进行此乘积计算。 .如果有人可以帮助我完成第 2 部分,那就太好了。
Banana 的期望输出

List_output=[6.49, 48.9995]

输出说明:香蕉仅出现在 2 行中。因此,输出列表中只有两个值。第一个是 6.49,因为该行只有两个非 NaN值,其中之一是所选值,Banana .因此,与Banana关联的值临时更改为 1,其余值保持原样。必须对 List1 中的所有值执行此操作.希望我说清楚了

最佳答案

一种方法是像这样合并 DF 和 DF2 三次。

In [69]: DF
Out[69]:
EQ1 EQ2 EQ3
0 Apple Orange NaN
1 Banana Potato NaN
2 Pear Tomato Pineapple
3 Apple Tomato Pear
4 Tomato Potato Banana

In [70]: new_cols = ['V' + c for c in DF]

In [72]: for c, new_c in zip(DF, new_cols):
...: DF = DF.merge(DF2.rename(columns={'Value': new_c}),
...: how='left', left_on=c, right_on='Name')
...:

In [73]: DF[new_cols]
Out[73]:
VEQ1 VEQ2 VEQ3
0 3.21 4.32 NaN
1 5.22 6.49 NaN
2 4.89 7.55 0.01
3 3.21 7.55 4.89
4 7.55 6.49 5.22

In [74]: DF[new_cols].fillna(1.).product(axis=1)
Out[74]:
0 13.867200
1 33.877800
2 0.369195
3 118.511595
4 255.777390
dtype: float64

关于python - 如何对包含链接到 Python 中另一个数据框中的值的元素的数据框行执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367469/

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