Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫填充不知道序列索引的空值,数组的空值形状相同_Python_Pandas_Dataframe_Series - Fatal编程技术网

Python 熊猫填充不知道序列索引的空值,数组的空值形状相同

Python 熊猫填充不知道序列索引的空值,数组的空值形状相同,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我试图在数据帧的一列中填充一些NaN值。据我从中了解,我应该能够将熊猫系列传递给fillna,然后熊猫将用我提供的系列填充我的NaN 代码如下所示: XTrain_pd[class_name] = XTrain_pd[class_name].fillna(pd.Series(train_pred)) 因此,根据train\u pred中的值填写NaN值 我确保train_pred的长度和要填充的NaN的数量相同: print(XTrain_pd[class_name].isna().sum()

我试图在数据帧的一列中填充一些NaN值。据我从中了解,我应该能够将熊猫系列传递给
fillna
,然后熊猫将用我提供的系列填充我的NaN

代码如下所示:

XTrain_pd[class_name] = XTrain_pd[class_name].fillna(pd.Series(train_pred))
因此,根据
train\u pred
中的值填写NaN值

我确保
train_pred
的长度和要填充的NaN的数量相同:

print(XTrain_pd[class_name].isna().sum(),print(train_pred.shape))
这将产生:

(9,)
9 None
在对NaN值使用fillna之前和之后,我还打印了
XTrain\u pd

左图像在
fillna
之前,右图像在
fillna
之后

这里发生了一些神秘的事情。首先,在第6行中只插补一个NaN值。其次,我的
pd.NA
值被转换为
np.nan
值。这是怎么回事

TL;DR使用
.loc()
过滤nan值,并替换为预测df.loc[df.class\u name.isna(),'class\u name']=train\u pred

考虑索引3和9处有两个空值的数据帧

d = {
    'col_str': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'],
    'col_float': [1, 2, 3, np.nan, 5, 6, 7, 8, 9, np.nan]
}
df = pd.DataFrame(d)
df
>>>
 col_str  col_float
0   a   1.0
1   b   2.0
2   c   3.0
3   d   NaN
4   e   5.0
5   f   6.0
6   g   7.0
7   h   8.0
8   i   9.0
9   j   NaN
如果要用预测值替换空值,只需过滤
col\u float
上的
Nan
值并用预测值替换即可

train_pred = [4.0, 10.0]

df.loc[df.col_float.isna(), 'col_float'] = train_pred

如果要使用
fillna()
则需要为序列的每个索引指定每个值。

如果
.fillna()
的参数是序列,则数据帧和序列的索引是匹配的。因此,您需要一个系列,该系列的索引与数据帧的NA行的索引相匹配。