- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已从库存管理系统中检索了多个商品的库存变动情况:
index itemid date sold received balance stock_level
0 123456 30.03.18 -1 0 -1 3
1 123456 04.04.18 -1 0 -1 2
2 123456 09.04.18 0 1 1 3
3 123457 01.04.18 0 1 1 3
4 123457 03.04.18 -1 0 -1 2
5 123457 11.04.18 0 1 1 3
为了执行正确的分析,我创建了一个连续的日期序列
index itemid date sold received balance stock_level
0 123456 28.03.18 0 0 0 nan
1 123456 29.03.18 0 0 0 nan
2 123456 30.03.18 -1 0 -1 3
3 123456 31.03.18 0 0 0 nan
4 123456 01.04.18 0 0 0 nan
5 123456 02.04.18 0 0 0 nan
6 123456 03.04.18 0 0 0 nan
7 123456 04.04.18 -1 0 -1 2
8 123456 05.04.18 0 0 0 nan
9 123456 06.04.18 0 0 0 nan
10 123456 07.04.18 0 0 0 nan
11 123456 08.04.18 0 0 0 nan
12 123456 09.04.18 0 1 1 3
13 123456 10.04.18 0 0 0 nan
14 123456 11.04.18 0 0 0 nan
15 123457 28.03.18 0 0 0 nan
16 123457 29.03.18 0 0 0 nan
17 123457 30.03.18 0 0 0 nan
18 123457 31.03.18 0 0 0 nan
19 123457 01.04.18 0 1 1 3
20 123457 02.04.18 0 0 0 nan
21 123457 03.04.18 -1 0 -1 2
22 123457 04.04.18 0 0 0 nan
23 123457 05.04.18 0 0 0 nan
[...]
28 123457 11.04.18 0 1 1 3
现在,我需要为每个商品 groupby(itemid)
填充 stock 列中的 nan 值。我可以对每个组使用 ffill 来填充第三行的值,但需要根据(第一个非 nan 股票值)-(该索引处的余额值)的函数对每个组进行 bfill。
例如索引 0 的 bfill 应该是(索引 2 处的 stock_level)-(索引 2 处的余额)。
也就是说,我要寻找的结果是
index itemid date sold received balance stock_level
0 123456 28.03.18 0 0 0 4
1 123456 29.03.18 0 0 0 4
2 123456 30.03.18 -1 0 -1 3
3 123456 31.03.18 0 0 0 3
4 123456 01.04.18 0 0 0 3
5 123456 02.04.18 0 0 0 3
6 123456 03.04.18 0 0 0 3
7 123456 04.04.18 -1 0 -1 2
8 123456 05.04.18 0 0 0 2
9 123456 06.04.18 0 0 0 2
10 123456 07.04.18 0 0 0 2
11 123456 08.04.18 0 0 0 2
12 123456 09.04.18 0 1 1 3
13 123456 10.04.18 0 0 0 3
14 123456 11.04.18 0 0 0 3
15 123457 28.03.18 0 0 0 2
16 123457 29.03.18 0 0 0 2
17 123457 30.03.18 0 0 0 2
18 123457 31.03.18 0 0 0 2
19 123457 01.04.18 0 1 1 3
20 123457 02.04.18 0 0 0 3
21 123457 03.04.18 -1 0 -1 2
22 123457 04.04.18 0 0 0 2
23 123457 05.04.18 0 0 0 2
[...]
28 123457 11.04.18 0 1 1 3
如何根据第一个非 nan 值索引处的函数回填每个项目组?
最佳答案
ffill
之后,唯一保留的 NaN 是开头的 NaN。
您需要在此处使用 pd.Series.first_valid_index
以及 ffill
和 fillna
的组合。
i = df.stock_level.first_valid_index()
df.stock_level.ffill().fillna(df.stock_level[i] - df.balance[i])
0 4.0
1 4.0
2 3.0
3 3.0
4 3.0
5 3.0
6 3.0
7 2.0
8 2.0
9 2.0
10 2.0
11 2.0
12 3.0
13 3.0
14 3.0
Name: stock_level, dtype: float64
关于Python Pandas : fillna/bfill using function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49940329/
我有一个 Pandas 数据框 City State 0 Cambridge MA 1 NaN DC 2 Boston MA
我有一个 pandas 数据框,我想用 'colname_miss' 字符串填充缺失的类别。 def FillCatMissing(df): cols = ['A','B','C']
对于初学者,这里有一些符合我的问题的人工数据: df = pd.DataFrame(np.random.randint(0, 100, size=(vsize, 10)), col
fillna可以接受一个函数吗?或者只是“backfill”、“bfill”等方法? http://pandas.pydata.org/pandas-docs/stable/generated/pan
我想在多索引数据帧上使用 fillna,并仅在特定列位于同一索引中时填充该列。下一个索引可能以 n/a 开头,因此我无法在该列上调用 fillna 。组的大小正在变化,因此我无法通过数量来限制功能。
我正在尝试替换 pandas 数据框中的 NaT。 orders.PAID_AT 0 NaT 1 NaT 2
我有一个大型数据框,其值如下: Name A B C D E F G # Coulmns Matt 1 n n n 5 n 5 # rows Jake n n 2
我有一个大约 100 万行的大型数据集,大约有 5000 个缺失坐标(我想用类别“城市”的中值填充它们,但 fillna 正在工作,如何实现它? city = ['London', 'Paris',
我正在尝试用 if 条件做一个 fillna Fimport pandas as pd df = pd.DataFrame(data={'a':[1,None,3,None],'b':[4,None,
我有如下数据框 Re_MC,Fi_MC,Fin_id,Res_id, 1,2,3,4 ,7,6,11 11,,31,32 ,,35,38 df1 = pd.read_clipboard(sep
我有一个数据框,其中有一列连续但不相邻的数字和缺失值。 我想使用 fillna 函数用前一个非缺失行的增量值填充缺失值。 这是一个简化的表格: index my_counter 0 1 1
我有以下两个数据框 df1和 df2df1: A B C D 1 Nora NaN Japan 2 Neo NaN India 3
我试图填充所有缺失值,直到数据帧结束,但无法这样做。在下面的示例中,我取了最后三个值的平均值。我的代码只填充到 2017-01-10,而我想填充到 2017-01-14。对于 1/14,我想使用 11
我有一个关于给定主题的报告数据框。每份报告都有一个分数,受试者在某些日期有分数,但在其他日期没有分数。我想创建一个新的数据框,它只包含每个主题的最新分数。下面是一个 MRE。原始数据框如下所示:
我有一个如下所示的数据框 df = pd.DataFrame({'person_id': [101,101,101,101,202,202,202],
我正在处理一个汽车销售数据集,其中包含以下列:'car'、'price'、'body'、'mileage'、'engV'、'engType'、'registration'、'year'、'model'
我想估算 df['box_office_revenue'] 的缺失值中位数由 df['release_date'] == x 指定和df['genre'] == y 。 下面是我的中值查找函数。 de
我有一个带有“元数据”列的 Pandas 数据框,该列应包含字典作为值。但是,某些值丢失并设置为 NaN。我希望这是 {}。有时,整个列都丢失了,将其初始化为 {} 也是有问题的。 用于添加列 tsp
我正在尝试在特定条件适用的情况下用 0 填充某些行。我正在尝试: df.loc[:,(df.Available == True) & (df.Intensity.isnull())].Intensit
带有 NA 的 series_A 由一个 MultiIndex (X, Y) 索引,而要填写的值在 Series_B 中,它由 X 索引。如何有效解决此类问题? 例如,这里是series_A: bar
我是一名优秀的程序员,十分优秀!