无法从熊猫系列中删除 NaN
Unable to remove NaN from panda Series
我知道这个问题以前被问过很多次,但我找到的所有解决方案似乎都不适合我。我无法从我的 pandas 系列或 DataFrame 中删除 NaN 值。
首先,我尝试像文档中的 I/O 7 和 8 那样直接从 DataFrame 中删除 (http://pandas.pydata.org/pandas-docs/stable/missing_data.html)
In[1]:
df['salary'][:5]
Out[1]:
0 365788
1 267102
2 170941
3 NaN
4 243293
In [2]:
pd.isnull(df['salary'][:5])
Out[2]:
0 False
1 False
2 False
3 False
4 False
我原以为第 3 行会显示为 True,但事实并非如此。我从 DataFrame 中删除了 Series 以重试。
sal = df['salary'][:5]
In [100]:
type(sals)
Out[100]:
pandas.core.series.Series
In [101]:
sal.isnull()
Out[101]:
0 False
1 False
2 False
3 False
4 False
Name: salary, dtype: bool
In [102]:
sal.dropna()
Out[102]:
0 365788
1 267102
2 170941
3 NaN
4 243293
Name: salary, dtype: object
有人可以告诉我我做错了什么吗?我正在使用 IPython Notebook 2.2.0.
您的列的数据类型是 object
,这告诉我它可能包含字符串而不是数值。尝试转换为浮点数:
>>> sa1 = pd.Series(["365788", "267102", "170941", "NaN", "243293"])
>>> sa1
0 365788
1 267102
2 170941
3 NaN
4 243293
dtype: object
>>> sa1.isnull()
0 False
1 False
2 False
3 False
4 False
dtype: bool
>>> sa1 = sa1.astype(float)
>>> sa1.isnull()
0 False
1 False
2 False
3 True
4 False
dtype: bool
我知道这个问题以前被问过很多次,但我找到的所有解决方案似乎都不适合我。我无法从我的 pandas 系列或 DataFrame 中删除 NaN 值。
首先,我尝试像文档中的 I/O 7 和 8 那样直接从 DataFrame 中删除 (http://pandas.pydata.org/pandas-docs/stable/missing_data.html)
In[1]:
df['salary'][:5]
Out[1]:
0 365788
1 267102
2 170941
3 NaN
4 243293
In [2]:
pd.isnull(df['salary'][:5])
Out[2]:
0 False
1 False
2 False
3 False
4 False
我原以为第 3 行会显示为 True,但事实并非如此。我从 DataFrame 中删除了 Series 以重试。
sal = df['salary'][:5]
In [100]:
type(sals)
Out[100]:
pandas.core.series.Series
In [101]:
sal.isnull()
Out[101]:
0 False
1 False
2 False
3 False
4 False
Name: salary, dtype: bool
In [102]:
sal.dropna()
Out[102]:
0 365788
1 267102
2 170941
3 NaN
4 243293
Name: salary, dtype: object
有人可以告诉我我做错了什么吗?我正在使用 IPython Notebook 2.2.0.
您的列的数据类型是 object
,这告诉我它可能包含字符串而不是数值。尝试转换为浮点数:
>>> sa1 = pd.Series(["365788", "267102", "170941", "NaN", "243293"])
>>> sa1
0 365788
1 267102
2 170941
3 NaN
4 243293
dtype: object
>>> sa1.isnull()
0 False
1 False
2 False
3 False
4 False
dtype: bool
>>> sa1 = sa1.astype(float)
>>> sa1.isnull()
0 False
1 False
2 False
3 True
4 False
dtype: bool