我有一些如上所示的数据帧。该计划的目标是用前一个替换某些特定值。
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]
然而,这是非常低效的。你能建议一个更有效的解决方案吗?
答案 0 :(得分:1)
IIUC,replace
至np.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