我有一个项目,我正在尝试将数据框更新为正在推出的一组新更改。目前数据框中有 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]
,但我收到了错误
类型错误:不可散列的类型:'numpy.ndarray'
我明白为什么会发生错误,我只是想找到最好的替代方案。
最佳答案
看起来你需要。
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"]* [df_dict.get(i, 1) for i in df["col3"]]
print(df)
输出:
col1 col2 col3
0 1.20 1 a
1 3.00 2 b
2 2.85 3 c
3 5.00 4 d
关于python - 迭代 numpy 数组以在字典中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56853201/