Python 熊猫填充不知道序列索引的空值,数组的空值形状相同
我试图在数据帧的一列中填充一些NaN值。据我从中了解,我应该能够将熊猫系列传递给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()
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行的索引相匹配。