Python 性能比较和列选择的矢量化

Python 性能比较和列选择的矢量化,python,pandas,performance,vectorization,Python,Pandas,Performance,Vectorization,我试图矢量化一个循环,该循环基于另一个数据帧(df_覆盖)中的值替换数据帧(df)中的值。对于df_override中的每一行,我们在df中找到匹配的“name”列,并将其“Field”列替换为“new value”中指定的新值。如果name是整数,则有一个if语句与另一列匹配 我写了两个循环来实现这一点。但是,目标是尽可能提高性能。旧的循环速度较慢,因为它使用ItErrors,所以我转到了np循环。我希望将这个循环矢量化以进一步提高运行时间,但我不知道如何继续 旧循环(慢) 新回路(更快) 不

我试图矢量化一个循环,该循环基于另一个数据帧(df_覆盖)中的值替换数据帧(df)中的值。对于df_override中的每一行,我们在df中找到匹配的“name”列,并将其“Field”列替换为“new value”中指定的新值。如果name是整数,则有一个if语句与另一列匹配

我写了两个循环来实现这一点。但是,目标是尽可能提高性能。旧的循环速度较慢,因为它使用ItErrors,所以我转到了np循环。我希望将这个循环矢量化以进一步提高运行时间,但我不知道如何继续

旧循环(慢)

新回路(更快)

不起作用(由于比较,字段选择似乎没有按预期工作)

样本数据

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

它们也可以是df_override的name列中的颜色吗?它们也可以是df_override的name列中的颜色吗?
fields = df_override["Field"].values
names = df_override["name"].values
values = df_override["New Value"].values

for field, name, value in zip(fields, names, 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)

fields = df_override["Field"].values
names = df_override["name"].values
values = df_override["New Value"].values

#Trying without the if statement here
df[fields] = np.where(df["name"]  == names, df[fields], values)

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