我想用同一行的先前值填充特定行的值“ 0”。因此,逻辑是,如果该行的下一个值为“ 0”,则将同一行的前一个值复制到该行。
该行的示例
和预期结果
该行是熊猫数据框的一部分。请提供代码示例。感谢您的帮助。
谢谢
答案 0 :(得分:1)
import numpy as np
df['col_name'].replace(0, np.nan).bfill()
如果您的0
是字符串,请使用
df['col_name'].replace("0", np.nan).bfill()
bfill
表示您将向后填充NaN
。您也可以使用ffill()
df['col_name'].replace(0, np.nan).ffill()
如注释中所述,您还可以使用to_replace
arg一次设置所有内容:
df.col.replace(to_replace=0, method='ffill')
示例:
df = pd.DataFrame({'col': [1,2,3,0,5,6,7,0,9]})
col
0 1
1 2
2 3
3 0
4 5
5 6
6 7
7 0
8 9
df.col.replace(0, np.nan).bfill()
0 1.0
1 2.0
2 3.0
3 5.0
4 5.0
5 6.0
6 7.0
7 9.0
8 9.0
请注意,一旦np.nan
是float
,熊猫可能会将该列解释为dtype float。但是,您始终可以使用astype
int
df.col.replace(0, np.nan).bfill().astype(int)
0 1
1 2
2 3
3 5
4 5
5 6
6 7
7 9
8 9