У меня есть проект, в котором я пытаюсь обновить информационный фрейм, чтобы внедрить новый набор изменений. В настоящее время в фрейме данных содержится 15 000 выборок данных, поэтому время выполнения может быстро стать проблемой. Я знаю, что векторизация фрейма данных с использованием Numpy - это хороший способ сократить время выполнения, но у меня возникла проблема с моим массивом Numpy и словарем.
Цель состоит в том, чтобы посмотреть на значение в col3
, использовать его в качестве ключа для df_dict
и использовать значение этой словарной записи для умножения на col2
и присвоения col1
.
Я смог сделать это, используя циклы for, но он сталкивается с серьезной проблемой времени выполнения - особенно потому, что в нем задействовано больше шагов, чем просто то, о чем я прошу помощи.
d = {"col1": [1, 2, 3, 4], "col2": [1, 2, 3, 4], "col3": ["a","b","c","d"]}
df = pd.DataFrame(data=d)
df_dict = {"a":1.2,"b":1.5,"c":0.95,"d":1.25}
df["col1"]=df["col2"].values*df_dict[df["col3"].values]
Я ожидаю, что col1
будет обновлено до [1.2, 3, 2.85, 5]
, но вместо этого я получаю ошибку
TypeError: unhashable type: 'numpy.ndarray'
Я понимаю, почему возникает ошибка, я просто хочу найти лучшую альтернативу.