首页 > 解决方案 > Pandas .fillna() 不能与 .sample() 一起使用

问题描述

我有一个数据集,其中有一列state的唯一值由['released', 'isolated', 'deceased', nan]. 我尝试使用随机抽样来估算丢失的数据,如下所示:

for column in ['sex','state','city']:
    df[column].fillna(df[column].sample(), inplace=True)

sex列似乎已正确估算;没有更多的缺失sex数据。但是,该state列似乎没有估算。当我检查该列时,我收到以下信息:

In [1]: df['state'].sample()
Out[1]: 1391    released
Name: state, dtype: object

因此,该列在上面的插补循环中被适当命名。当我在原始数据帧上尝试相同的操作时,我会收到一系列类似的NaNs:

In [2]: new=pd.DataFrame({'blank':[np.nan for i in range(0,100)]})
In [3]: new['blank'].fillna(df['state'].sample())
Out[3]: 
0    NaN
1    NaN
2    NaN
3    NaN
4    NaN
      ..
95   NaN
96   NaN
97   NaN
98   NaN
99   NaN
Name: blank, Length: 100, dtype: float64

为什么state色谱柱不能正确取样fillna()

标签: pythonpandasrandomfillna

解决方案


你不能fillna用,Series因为它会匹配index

new=pd.DataFrame({'blank':[np.nan for i in range(0,100)]})

new['blank'].fillna(df['state'].sample().iloc[0])

推荐阅读