如何在python的数据框中比较一行中的连续字符串值

时间:2018-07-27 13:08:03

标签: python python-3.x pandas data-cleaning

我想用同一行的先前值填充特定行的值“ 0”。因此,逻辑是,如果该行的下一个值为“ 0”,则将同一行的前一个值复制到该行。

该行的示例

enter image description here

和预期结果

enter image description here

该行是熊猫数据框的一部分。请提供代码示例。感谢您的帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用replace()bfill()

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.nanfloat,熊猫可能会将该列解释为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