gpt4 book ai didi

python - 如何最大限度地减少运行时间 : Value Replacement Iterations in Pandas

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

我有一个名为 df_override 的数据框,其中包含“名称”、“字段”和“新值”列。此循环的目的是将 df 数据帧的“字段”列中的所有“名称”匹配替换为“新值”。 if 语句是看它是否是一个整数,然后用“id”列来匹配。

这个循环工作得很好,但是对于一个大的数据帧,它会变得令人难以置信的慢。我还有其他几个 for 循环,它们稍后在函数中运行。我想知道是否有其他方法可以执行针对运行时优化的此功能?

谢谢。

for index, row in df_override.iterrows():
if(not str(row["name"]).isdigit()):
df.loc[df["name"] == row["name"], row["Field"]] = row["New Value"]
else:
df.loc[df["id"] == row["name"], row["Field"]] = row["New Value"]

df_override
"name" "Field" "New Value"
apple color red
100 is_number True

df
"name" "id" "color" "is_number"
apple 300 blue False
apple 200 yellow False
banana 100 green False

df (after processing)
"name" "id" "color" "is_number"
apple 300 red False
apple 200 red False
banana 100 green True

最佳答案

将其更改为值而不是 iterrow 可以提高性能,但仍然很慢。

新循环

for field, name, value in zip(df_override["Field"].values,df_override["name"].values,df_override["New Value"].values):
if not str(name).isdigit():
df[field] = np.where(df["name"] == name, df[field], value)
else:
df[field] = np.where(df["id"] == name, df[field], value)

关于python - 如何最大限度地减少运行时间 : Value Replacement Iterations in Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56365636/

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