【问题标题】:Replace by previous values替换为以前的值
【发布时间】:2018-03-20 21:18:24
【问题描述】:

我有一些如上图所示的数据框。该程序的目标是用前一个值替换某些特定值。

import pandas as pd
test = pd.DataFrame([2,2,3,1,1,2,4,6,43,23,4,1,3,3,1,1,1,4,5], columns = ['A'])

获得:

如果想用以前的值替换所有 1,一个可能的解决方案是:

for li in test[test['A'] == 1].index:
    test['A'].iloc[li] = test['A'].iloc[li-1] 

但是,它的效率非常低。您能提出一个更有效的解决方案吗?

【问题讨论】:

  • 如果你仔细看,我留下的是代码而不是代码的图像。我发布了输出的图像,这是完全不同的。
  • 我确实仔细看了,虽然它的迂腐不一样,但它属于同一个问题的同一类。我应该能够将这些输入直接复制粘贴到我的编辑器中,以帮助解决这个问题。 当你强迫我们转录一张图片时,你浪费了每个人的时间。
  • 你读过这个问题吗?

标签: python pandas for-loop


【解决方案1】:

IIUC,replacenp.nan 然后 ffill

test.replace(1,np.nan).ffill().astype(int)
Out[881]: 
     A
0    2
1    2
2    3
3    3
4    3
5    2
6    4
7    6
8   43
9   23
10   4
11   4
12   3
13   3
14   3
15   3
16   3
17   4
18   5

【讨论】:

    猜你喜欢
    • 2014-03-07
    • 2021-11-27
    • 2015-08-24
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2021-11-09
    • 2019-11-24
    • 2016-01-20
    相关资源
    最近更新 更多