- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据框:
id indicator
1 NaN
1 NaN
1 1
1 NaN
1 NaN
1 NaN
其实我还有好几个id。我现在的问题是,如何针对特定范围进行向前或向后填充,例如仅针对下一个/最后 2 个观察结果。我的数据框应该是这样的:
id indicator
1 NaN
1 NaN
1 1
1 1
1 1
1 NaN
我知道命令
df.groupby("id")["indicator"].fillna(value=None, method="ffill")
但是,这会填充所有缺失值,而不仅仅是接下来的两个观察值。有人知道解决方案吗?
最佳答案
我认为DataFrameGroupBy.ffill
或 DataFrameGroupBy.bfill
使用 limit
参数更好:
df.groupby("id")["indicator"].ffill(limit=3)
df.groupby("id")["indicator"].bfill(limit=3)
示例:
#5 value is in the end of group, so only one value is filled
df['filled'] = df.groupby("id")["indicator"].ffill(limit=2)
print (df)
id indicator filled
0 1 NaN NaN
1 1 NaN NaN
2 1 1.0 1.0
3 1 NaN 1.0
4 1 NaN 1.0
5 1 NaN NaN
6 1 NaN NaN
7 1 NaN NaN
8 1 4.0 4.0
9 1 NaN 4.0
10 1 NaN 4.0
11 1 NaN NaN
12 1 NaN NaN
13 2 NaN NaN
14 2 NaN NaN
15 2 1.0 1.0
16 2 NaN 1.0
17 2 NaN 1.0
18 2 NaN NaN
19 2 5.0 5.0
20 2 NaN 5.0
21 3 3.0 3.0
22 3 NaN 3.0
23 3 NaN 3.0
24 3 NaN NaN
25 3 NaN NaN
关于python - Pandas ffill/bfill 用于特定数量的观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45343153/
我认为我在概念上遗漏了一些基本概念,但我无法在文档中找到答案。 >>> df=pd.DataFrame({'a':[1,1,2,2,3,3], 'b':[5,np.nan, 6, np.nan, np
我正在尝试在 join_key 中执行以下逻辑。date + book + bdr + COALECSE(cusip,isin,deal,id) +------------+------+------
我有以下数据框: id indicator 1 NaN 1 NaN 1 1 1 NaN 1
我已从库存管理系统中检索了多个商品的库存变动情况: index itemid date sold received balance stock_level 0
假设我有以下 pd.Series: 0 NaN 1 NaN 2 4.0 3 NaN 4 NaN 5 7.0 6 NaN 7 NaN 8
我是 python 和 pandas 的新手,坚持下面提到的请求将 python pandas 数据框中的数据作为 time_stamp dish_id table_no order_
问题 有没有办法在 Pandas 中使用 replace 同时 ffill 和 bfill ? 请参阅以下示例: l = 12 rng = pd.date_range('1/1/2011', peri
Pandas 数据框初学者。我在下面设置了此数据集,其中 A 列和 B 列 (Test.csv) 缺少值: DateTime A B 01-01-20
假设我是一名农民……我经常去田地里采摘所有成熟的苹果、梨和李子。我跟踪每天在名为 pick_counts 的数据框中选择了多少个。 : import pandas as pd import numpy
有一个浮点列,其中存在一些写为 0.00 的空值。 如何像使用 fillna(method='ffill') 一样填充这些 0 值? 最佳答案 首先将 0 替换为缺失值: df['col'] = df
我是一名优秀的程序员,十分优秀!