gpt4 book ai didi

python - 比较两个 pandas dataframe 单元格,如果相等 ==,则复制其他内容 - 导致错误

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

我正在导入包含产品和产品特定数据的 Excel 文件。它们看起来像这样:

外交部

EAN Code    Product Name    Color    Price
12345 AAA xxx 9
45678 BBB zzz 10

和dfB

EAN Code    Product Name    New Price
12-345 AAA 10
45-678 BBB 11

我一如既往地导入这些:

dfA = pd.DataFrame (dfA, columns=["Season", "EAN Code", "Product Name", "..."] , dtype=str)

我正在合并它们,因为有多个不同的 excel 文件:

dfA = pd.concat([dfA1, dfA2, dfA3, dfA4, dfA5, dfA6, dfA7, dfA8, dfA9, dfA10, dfA11], ignore_index=False)

然后我删除了 EAN 列中的连字符,因为在 excel 文件 b 中,EAN 编号中有一个不必要的连字符。

for col in dfB.columns:
dfB["EAN"] = dfB["EAN"].str.replace('-', '')

到目前为止,还不错。

现在我尝试通过 dfA 的 EAN 代码列进行搜索,并在 dfB 中搜索相同的产品。当有匹配时,我想复制新价格。这在我的旧代码中效果很好,尽管脚本搜索 50 万行需要大约 15 分钟......这在过去工作得很好,但现在我试图实现同样的目标,但我收到一条错误消息。这是我的简化代码:

for i in dfA.index:
for j in dfB.index:
if dfA.loc[i, "EAN"] == dfB.loc[j, "EAN"]:
print ("EAN", number,"times found!")
number=number+1
dfA.loc[i, "Price"] = dfB.loc[j, "New Price"]

打印语句只是对我的反馈,以便我查看脚本是否仍在执行某些操作。

Traceback (most recent call last):
File "c:...", line 72, in <module>
if dfA.loc[i, "EAN"] == dfB.loc[j, "EAN"]:
File "C:...", line 1527, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

为什么我现在得到这个?

最佳答案

使用 merge ,设置通用 EAN 代码后:

out = dfA.merge(
dfB.assign(**{'EAN Code': dfB['EAN Code'].str.replace('-', '')
.astype(int) # only if dfA has an int
}),
on='EAN Code')

输出:

   EAN Code Product Name_x Color  Price Product Name_y  New Price
0 12345 AAA xxx 9 AAA 10
1 45678 BBB zzz 10 BBB 11

关于python - 比较两个 pandas dataframe 单元格,如果相等 ==,则复制其他内容 - 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73080579/

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