大家早上好, 我有一个 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/