【发布时间】:2018-04-22 03:52:50
【问题描述】:
我希望在我的 pandas 数据框中转发填充一些值,但有限制。但是,限制只需要填充连续 nan 计数小于或等于限制的 nan 组。这是一个例子,
创建一个缺少数据的df,
import numpy as np
import pandas as pd
df = pd.DataFrame(
{'val': [1, 1, np.nan, np.nan, 2, 3, np.nan, np.nan, np.nan, np.nan, 1, 1]}
)
print(df)
val
0 1.0
1 1.0
2 NaN
3 NaN
4 2.0
5 3.0
6 NaN
7 NaN
8 NaN
9 NaN
10 1.0
11 1.0
现在,如果我们将它填充到所有 nan 中,最多向前 2 步,
print(df.ffill(limit=2))
val
0 1.0
1 1.0
2 1.0
3 1.0
4 2.0
5 3.0
6 3.0 #
7 3.0 #
8 NaN
9 NaN
10 1.0
11 1.0
当我不希望它们时,那些用#fill 读取(上图)。我想要的是得到以下,
print(df.ffill(limit=2, dont_fill_any_nan_gaps_bigger_than_limit=True))
val
0 1.0
1 1.0
2 1.0
3 1.0
4 2.0
5 3.0
6 NaN #
7 NaN #
8 NaN
9 NaN
10 1.0
11 1.0
当然这不需要是ffill中的单个参数,而是具有相同效果的东西。
【问题讨论】:
-
刚刚意识到我完成了一半的标题。我添加了一个标题,但请提出一个更好的标题。不知道怎么写...