【发布时间】:2016-03-05 17:56:43
【问题描述】:
我在 Python 3 中运行 Pandas,我注意到以下内容:
import pandas as pd
import numpy as np
from pandas import DataFrame
from numpy import nan
df = DataFrame([[1, nan], [nan, 4], [5, 6]])
print(df)
df2 = df
df2.fillna(0)
print(df2)
返回以下内容:
0 1
0 1 NaN
1 NaN 4
2 5 6
0 1
0 1 NaN
1 NaN 4
2 5 6
虽然如下:
import pandas as pd
import numpy as np
from pandas import Series
from numpy import nan
sr1 = Series([1,2,3,nan,5,6,7])
sr1.fillna(0)
返回以下内容:
0 1
1 2
2 3
3 0
4 5
5 6
6 7
dtype: float64
所以当我使用 .fillna() 时,它使用 0 填充 Series 值而不是 DataFrame 值。我在这里缺少什么来代替 DataFrames 中的空值?
【问题讨论】:
-
不是这里发生的事情,但可能会对某人有所帮助,如果 dtype 不是数字,则不能将 df.fillna 与 df.mean 一起使用(用列均值替换缺失值)。听起来很明显,但它自己的 df.mean() 仍然有效。