gpt4 book ai didi

Python Pandas fillna 在 for 循环中不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:55 27 4
gpt4 key购买 nike

给定如下设置:

import pandas as pd
import numpy as np

#Create random number dataframes
df1 = pd.DataFrame(np.random.rand(10,4))
df2 = pd.DataFrame(np.random.rand(10,4))
df3 = pd.DataFrame(np.random.rand(10,4))

#Create list of dataframes
data_frame_list = [df1, df2, df3]

#Introduce some NaN values
df1.iloc[4,3] = np.NaN
df2.iloc[1:4,2] = np.NaN

#Create loop to ffill any NaN values
for df in data_frame_list:
df = df.fillna(method='ffill')

这仍然使 df2(例如)为:

           0           1           2           3
0 0.946601 0.492957 0.688421 0.582571
1 0.365173 0.507617 NaN 0.997909
2 0.185005 0.496989 NaN 0.962120
3 0.278633 0.515227 NaN 0.868952
4 0.346495 0.779571 0.376018 0.750900
5 0.384307 0.594381 0.741655 0.510144
6 0.499180 0.885632 0.13413 0.196010
7 0.245445 0.771402 0.371148 0.222618
8 0.564510 0.487644 0.121945 0.095932
9 0.401214 0.282698 0.0181196 0.689916

虽然单独一行代码:

df2 = df2.fillna(method='ffill)

有效。我认为问题可能是由于我命名变量的方式造成的,所以我引入了 global()[df],但这似乎也不起作用。

想知道是否可以在 for 循环中对整个数据帧进行 ffill,还是我的方法某处出错了?

最佳答案

不,不幸的是它没有。您调用 fillna 的位置不正确,它会生成一个副本,然后您将其重新分配回变量 df。您应该明白,重新分配此变量不会更改列表的内容。

如果您想这样做,请遍历索引或使用列表理解。

data_frame_list = [df.ffill() for df in data_frame_list]

或者,

for i in range(len(data_frame_list)):
data_frame_list[i].ffill(inplace=True)

关于Python Pandas fillna 在 for 循环中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035399/

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