python - 迭代 numpy 数组以在字典中使用

标签 python pandas numpy dataframe

我有一个项目,我正在尝试将数据框更新为正在推出的一组新更改。目前数据框中有 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/

相关文章:

python - 房屋强盗 - Python 语法

python - 在 pandas 数据帧的所有行上迭代 nltk.tokenize

numpy - 浮点非确定性的原因?包括 NumPy?

python - 我怎样才能简单地计算 python 中时间序列的滚动/移动方差?

python - 使用另一列的偏移值比较 Pandas 数据框列的值

python - 覆盖第三方模块的方法有多糟糕?

python - 列表理解的意外输出

python - 我如何在不重置的情况下在django中使用forloop计数器

python - 如何在Python代码中拥有cfile

python - 将轮类数据(开始和结束时间)拆分为每小时数据