在 pandas 中乘以 float 列需要太多时间

multiplying float columns in pandas takes too much time

大家早安, 我有一个 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']

还是超级慢......... 哦,这可能吗? 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'