首页 > 解决方案 > Python - 用 Pandas 替换特定值

问题描述

当满足某个条件时,我试图替换我的 Pandas 数据框中的一个值。我几乎得到了它,这就是我目前所拥有的:

df.loc[df['change daily'] < -5000] = 99999

该条件非常有效 - 它能够识别“每日更改”值小于 5000 的行。但是,这会导致整个行被替换为 99999。

10  2020-08-04         36675  ...      1    Tuesday
11       99999         99999  ...  99999      99999
12  2020-08-06         36502  ...      3   Thursday

我该如何做到这一点,所以只有“每天改变”才会改变?删除该行不是一种选择,因为我仍然需要使用其他列中的数字。

另外,虽然你们都在这里,有没有办法让它成为一个空值?我打算将它设置为一个超高值,然后将所有等于 99999 的值替换为 null,但我确信有一种方法可以将其设置为 null,而无需额外的步骤。

谢谢 :)

标签: pythonpandas

解决方案


import numpy as np
df.loc[df['change daily'] < -5000].loc[:,"change daily"]=np.nan

或者,

import numpy as np
indices=df.loc[df['change daily'] < -5000].index
df.loc[indices, "change daily"]=np.nan

或者

df.loc[df['change daily'] < -5000, 'change daily'] = np.nan

推荐阅读