gpt4 book ai didi

python - 在多级列数据帧上就地前向填充

转载 作者:太空宇宙 更新时间:2023-11-03 14:52:42 25 4
gpt4 key购买 nike

我有以下数据框:

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
df.loc["B", (slice(None), 'two')]=np.nan

现在,我想转发填充“baz”和“foo”列的数据(因此不适用于“bar”和“qux”列)。我尝试过:

 df[["baz", "foo"]].ffill(inplace=True) 

但是生成的数据帧没有向前填充任何值。如何创建一个仅包含这两列的前向填充数据的数据框?

最佳答案

我认为问题是由于 inplace=True 设置造成的。尝试使用 df.loc 访问切片,然后将填充后的数据帧切片分配回来:

df.loc[:, ["baz", "foo"]] = df[["baz", "foo"]].ffill() 

输出:

first        baz                 foo          
second one two one two
A 0.465254 0.629161 -0.176656 -1.263927
B 2.051213 0.629161 1.539584 -1.263927
C -0.463592 -0.240445 -0.014090 0.170188
<小时/>

或者,您可以使用df.fillna(method='ffill'):

df.loc[:, ["baz", "foo"]] = df[["baz", "foo"]].fillna(method='ffill') 

关于python - 在多级列数据帧上就地前向填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799017/

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