所有人都在哭泣, 我有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...。
答案 0 :(得分:1)
尝试分开操作:
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')
只需用另一种逻辑方法替换“执行其他操作”即可,如果df.colx != 'S'