我有一个表示对象状态的数组,其中 0 - 对象关闭,1 - 对象打开。
import pandas as pd
import numpy as np
s = [np.nan, 0, np.nan, np.nan, 1, np.nan, np.nan, 0, np.nan, 1, np.nan]
df = pd.DataFrame(s, columns=["s"])
df
s
0 NaN
1 0.0
2 NaN
3 NaN
4 1.0
5 NaN
6 NaN
7 0.0
8 NaN
9 1.0
10 NaN
Run Code Online (Sandbox Code Playgroud)
我只需要转发其中的 0 值,如下所示。
>>> df_wanted
s
0 NaN
1 0.0
2 0.0
3 0.0
4 1.0
5 NaN
6 NaN
7 0.0
8 0.0
9 …Run Code Online (Sandbox Code Playgroud) 我对在 pandas 的列中向前填充单个值和多个值感兴趣。使用以下数据框:
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
df
0 1 2
0 1 2 3
1 4 NaN NaN
2 NaN NaN 9
Run Code Online (Sandbox Code Playgroud)
正向填充将产生:
df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
df.fillna(method='ffill')
df
0 1 2
0 1 2 3
1 4 2 3
2 4 2 9
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种类似填充的方法来执行此操作,或者如果上面的值彼此连续,则复制所有上述值:
df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, 5, 9], [None,None,None])
df
0 1 2 …Run Code Online (Sandbox Code Playgroud)