3 回答
TA贡献2051条经验 获得超10个赞
fillna
ffill
>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])>>> df.fillna(method='ffill') 0 1 20 1 2 31 4 2 32 4 2 9
将最后有效的观察向前传播到下一个有效的
bfill
inplace=True
:
df.fillna(method='ffill', inplace=True)
TA贡献1780条经验 获得超1个赞
公认的答案是完美的。我有一个相关的,但略有不同的情况,我必须填补前进,但只在小组内。如果有人有同样的需求,请知道addna在DataFrameGroupBy对象上工作。
>>> example = pd.DataFrame({'number':[0,1,2,nan,4,nan,6,7,8,9],'name':list('aaabbbcccc')})
>>> example
name number
0 a 0.0
1 a 1.0
2 a 2.0
3 b NaN
4 b 4.0
5 b NaN
6 c 6.0
7 c 7.0
8 c 8.0
9 c 9.0
>>> example.groupby('name')['number'].fillna(method='ffill') # fill in row 5 but not row 3
0 0.0
1 1.0
2 2.0
3 NaN
4 4.0
5 4.0
6 6.0
7 7.0
8 8.0
9 9.0
Name: number, dtype: float64
TA贡献1801条经验 获得超16个赞
pandas.DataFrame.fillna
method='ffill'
'ffill'
'bfill'
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
df = df.fillna(method='ffill')
print(df)
# 0 1 2
#0 1 2 3
#1 4 2 3
#2 4 2 9
添加回答
举报