pandas 平均插补返回Dataframe中的None和Nan

xmq68pz9  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(117)

我想用mean方法填充两列的缺失值。这两个列的类型是float64。

df['col1'].dtypes
dtype('float64')
df['col2'].dtypes
dtype('float64')

字符串
我使用了两种方法来填充列。首先,我用“0”填充nan值。

df.replace(np.nan,0, inplace=True )


然后我使用fillna.mean()方法来填充列

df['col1']=df['col1'].fillna(df['col1'].mean(), inplace=True)


这是return之类的

Col1
Nan
Nan
Nan


我尝试了第二种方法,没有首先将nan值填充为零,而是直接应用均值插补方法,该方法返回“无”。
我不明白我的实现出了什么问题。如果你能帮忙的话,我会很感激的。

cgyqldqp

cgyqldqp1#

一个可能的解决方案(在计算平均值时需要使用skipna=True):

df['col1'].fillna(df['col1'].mean(skipna=True), inplace=True)

字符串

qij5mzcb

qij5mzcb2#

引用问题:“然后我使用fillna.mean()方法来填充列”
df['col1']=df['col1'].fillna(df['col1'].mean(),inplace=True)

删除inplace参数,因为您分配了列。这是第一个错误。

在清除这个错别字后,尽管过去了几年,它仍然完美地工作:pandas DataFrame: replace nan values with average of columns
df.fillna(df.mean())
用一个新鲜的随机示例验证:

col1  col2
0   1.0   NaN
1   0.1   1.0
2   NaN   3.2
3   4.0   NaN
4   8.0   0.0

个字符

首先不需要将NaN替换为0(在计算均值时也不需要跳过NaN,正如另一个答案所建议的那样)。

相关问题