python - 有条件地用 pandas 替换

标签 python pandas replace offset

我是 python 和 pandas 的新手...

我有一个带有一个文本列的数据框。我想,对于整个列,将值“AZB”替换为高于该值的值(偏移量为-1)

我怎样才能实现这一目标?我尝试过使用 pandas“where”,也尝试过

df[(df['INDEX'] == 'AZB')] = df['INDEX']-1

但没有成功

最佳答案

您可以将 'AZB' 值设置为 NaN,然后使用 fillna(method='ffill') 将其替换为上一行的值。

df.ix[df['INDEX'] == 'AZB', 'INDEX'] = np.NaN
df.fillna(method='ffill', inplace=True)

如果您的数据集不大,另一种方法是逐行迭代数据框,但速度会慢得多:

for i in range(1, len(df)):
    if df.ix[i, 'INDEX'] == 'AZB':
        df.ix[i, 'INDEX'] = df.ix[i-1, 'INDEX']

关于python - 有条件地用 pandas 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338070/

相关文章:

python - 无法手动关闭 matplotlib 绘图窗口

pandas - 是否可以使用 Python 将工作表插入到现有工作簿中?

javascript - 如何使用javascript替换字符串中所有匹配的纯文本字符串(但不是标签或属性)?

javascript - 使用replace()将链接包装在字符串中

python - 混合文件和循环

未找到 Python 模块,相对文件夹。想不通

python - Mac OS Catalina 中修复了 OS Mojave 中的 tkinter 8.6 系统崩溃错误吗?

python - 如何将 pandas 数据框转换为热图兼容数据框?

python - 添加许多具有重叠索引和列的 pandas 数据框

excel - 替换一列中的多个元素