[英]Python pandas how to replace zeros in a column between values with these same values
我有一個 csv 文件,其中計算了這樣的列:
Combined
0
0
1
0
0
0
2
0
0
0
3
0
0
0
0
-1
0
0
0
0
-2
0
0
0
0
-3
0
0
0
1
我想更改其中的值,例如,當值 -1 出現時,值 -2 之前的所有零都變成 -1,結果是這樣的
Combined
0
0
1
1
1
1
2
2
2
2
3
3
3
3
3
-1
-1
-1
-1
-1
-2
-2
-2
-2
-2
-3
-3
-3
-3
1
像這樣把class功能組合起來
cols = ['Answers', 'step', 'step2']
df['combined'] = df[cols].apply(lambda row: ''.join(row.values.astype(str)), axis=1)
df['combined'] = df['combined'].str.replace('0.000', 'O',regex=True)
df['combined'] = df['combined'].map(lambda x: x.lstrip('0.0').rstrip('.000'))
df['combined'] = df['combined'].str.replace('O', '0')
為了解釋起見,在此 csv 的開頭總是有一對零,但在它們之后總是出現 -1 或 1,然后它總是取決於第一個數字 -2 或 2,而三個正好出現相同取決於第二個數字 -3 或 3 並且在其循環重復之后也取決於三個。 -1 或 1。
如果需要將0
向前填充到以前的非0
值,請使用:
df['Combined'] = df['Combined'].replace(0, np.nan).ffill().fillna(0).astype(int)
print (df)
Combined
0 0
1 0
2 1
3 1
4 1
5 1
6 2
7 2
8 2
9 2
10 3
11 3
12 3
13 3
14 3
15 -1
16 -1
17 -1
18 -1
19 -1
20 -2
21 -2
22 -2
23 -2
24 -2
25 -3
26 -3
27 -3
28 -3
29 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.