熊猫.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

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

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()正确采样?

解决方法

您不能用fillna Series,因为它将与index匹配

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...