如何使用同一列表中的前一个数据帧的相同值用NAN填充数据帧

2024-04-30 02:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧列表A其中大多数是NAN数据帧,有些不是,我想用列表中以前的数据帧(不包含NAN)的相同值填充所有NAN数据帧。 下面是一个小例子:

A=[]

data = {'set_of_numbers': [1,2,3,4,4,5,9]}
df1 = pd.DataFrame(data,columns=['set_of_numbers'])
data2 = {'set_of_numbers': [0,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]}
df2 = pd.DataFrame(data2,columns=['set_of_numbers'])
data3 = {'set_of_numbers': [3,3,3,8,4,5,8]}
df3 = pd.DataFrame(data3,columns=['set_of_numbers'])
data4 = {'set_of_numbers': [0,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]}
df4 = pd.DataFrame(data4,columns=['set_of_numbers'])

A.append(df1)
A.append(df2)
A.append(df3)
A.append(df4)  
A  

我希望在第二张图中显示输出,其中所有nan数据帧都填充了以前数据帧的值

enter image description here

I would like to have this output:


Tags: columnsof数据dataframe列表datanpnan
1条回答
网友
1楼 · 发布于 2024-04-30 02:21:14

如果我理解正确:

for i, df in enumerate(A):
  df[df.isnull()] = A[i-1]

或者,如果您希望更改以前非nan df的数据类型:

for i, df in enumerate(A):
  if df.isnull().all().all():
    A[i] = A[i-1].copy()

根据OP的编辑问题:

for i, df in enumerate(A):
  if df.isnull().any().any():
    A[i] = A[i-1].copy()

输出:

[   set_of_numbers
0               1
1               2
2               3
3               4
4               4
5               5
6               9,    set_of_numbers
0               1
1               2
2               3
3               4
4               4
5               5
6               9,    set_of_numbers
0               3
1               3
2               3
3               8
4               4
5               5
6               8,    set_of_numbers
0               3
1               3
2               3
3               8
4               4
5               5
6               8]

相关问题 更多 >