gpt4 book ai didi

pandas - (pandas) 为什么 .bfill().ffill() 对组的作用与 ffill().bfill() 不同?

转载 作者:行者123 更新时间:2023-12-02 04:17:47 25 4
gpt4 key购买 nike

我认为我在概念上遗漏了一些基本概念,但我无法在文档中找到答案。

>>> df=pd.DataFrame({'a':[1,1,2,2,3,3], 'b':[5,np.nan, 6, np.nan, np.nan, np.nan]})
>>> df
a b
0 1 5.0
1 1 NaN
2 2 6.0
3 2 NaN
4 3 NaN
5 3 NaN

使用 ffill() 然后使用 bfill():

>>> df.groupby('a')['b'].ffill().bfill()
0 5.0
1 5.0
2 6.0
3 6.0
4 NaN
5 NaN

使用 bfill(),然后使用 ffill():

>>> df.groupby('a')['b'].bfill().ffill()
0 5.0
1 5.0
2 6.0
3 6.0
4 6.0
5 6.0

第二种方式不会破坏分组吗?第一种方法是否始终确保仅使用该组中的其他值填充这些值?

最佳答案

我认为你需要:

print (df.groupby('a')['b'].apply(lambda x: x.ffill().bfill()))
0 5.0
1 5.0
2 6.0
3 6.0
4 NaN
5 NaN
Name: b, dtype: float64

print (df.groupby('a')['b'].apply(lambda x: x.bfill().ffill()))
0 5.0
1 5.0
2 6.0
3 6.0
4 NaN
5 NaN
Name: b, dtype: float64

因为在您的示例中,只有第一个 ffillbfillDataFrameGroupBy.ffillDataFrameGroupBy.bfill ,第二个是处理输出Series。因此它会破坏组,因为 Series 没有组。

print (df.groupby('a')['b'].ffill())
0 5.0
1 5.0
2 6.0
3 6.0
4 NaN
5 NaN
Name: b, dtype: float64

print (df.groupby('a')['b'].bfill())
0 5.0
1 NaN
2 6.0
3 NaN
4 NaN
5 NaN
Name: b, dtype: float64

关于pandas - (pandas) 为什么 .bfill().ffill() 对组的作用与 ffill().bfill() 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com