python - 在 pandas 中乘以浮点列需要太多时间

标签 python pandas optimization floating-accuracy

大家早上好, 我有一个 460.000 行的 DataFrame,有 15 列。我试图将另外两列的乘积分配给一列 代码是这样的

df[df.colx == 'S']['prd'] = df['col1']*df['col2']

prd、col1 和 col2 的数据类型为 float64。 我在其他列上执行了很多操作,包括日期差异,都没有问题,而且它们几乎是立即执行的。 如果我尝试

df['prd'] =  df['col1']*df['col2']

执行速度非常快。当我尝试对 DataFrame 的子集应用操作时,问题就出现了 有人可以帮助我并解释如何减少执行时间吗? 非常感谢!

更新: 如果如果这样做

df2 = pd.DataFrame(df[df.colx=='S'])

然后

df2['prd'] =  df['col1']*df['col2']

还是 super 慢......... 哦,这可能吗? df2 应该是一个新的 DataFrame.......

最佳答案

尝试分离操作:

df2 = df[df.colx == 'S']
df2['prd'] = df2['col1]*df2['col2']

或者,如果df.colx == 'S'适合您,您可以运行:

df['prd'] = numpy.where(df['prod'] == 'S', df['col1']*df['col2'], 'Do something else')

只需用另一个逻辑选项替换 Do Something else,如果 df.colx != 'S'

则应执行此操作

关于python - 在 pandas 中乘以浮点列需要太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56540224/

相关文章:

python - 即使在使用 .loc 之后,也会尝试在来自 DataFrame 警告的切片副本上设置值

c++ - 减少 Wasm 文件大小(libc、优化、emscripten)

Python。如何优化搜索功能

python - Python 模块 Counter() 是否使用 C?

python - 使用 Pandas 从订单的时间序列创建订单簿的快照?

python - 按列值过滤 Pandas 分类数据框,然后更新其类别

python - Pandas groupby 多列,使用 pct_change

apache-flex - Flash 应用依赖于 Flex。是否有任何 SWF 字节码大小优化器?

python - 如何使用opencv python从视频中获取图像

python - 排序对象字典