簡體   English   中英

Python pandas 如何用這些相同的值替換值之間的列中的零

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM