Con*_*anG 8 python numpy nan pandas
我想找到在数据框中找到 None 的位置。
pd.DataFrame([None,np.nan]).isnull()
OUT:
0
0 True
1 True
Run Code Online (Sandbox Code Playgroud)
isnull() 找到 numpy Nan 和 None 值。
我只想要 None 值而不是 numpy Nan。有没有更简单的方法来做到这一点而不循环遍历数据框?
编辑:阅读评论后,我意识到在我的工作中的数据框中还包含字符串,因此 None 没有被强制为 numpy Nan。所以 Pisdom 给出的答案是有效的。
Kei*_*iku 20
如果你想得到每一行的True/False,你可以使用下面的代码。以下是以下 DataFrame 的结果示例:
df = pd.DataFrame([[None, 3], ["", np.nan]])
df
# 0 1
#0 None 3.0
#1 NaN
Run Code Online (Sandbox Code Playgroud)
None
.isnull()
>>> df[0].isnull()
0 True
1 False
Name: 0, dtype: bool
Run Code Online (Sandbox Code Playgroud)
.apply
==
或is
None
>>> df[0].apply(lambda x: x == None)
0 True
1 False
Name: 0, dtype: bool
>>> df[0].apply(lambda x: x is None)
0 True
1 False
Name: 0, dtype: bool
Run Code Online (Sandbox Code Playgroud)
.values
==
None
>>> df[0].values == None
array([ True, False])
Run Code Online (Sandbox Code Playgroud)
is
或==
>>> df[0] is None
False
>>> df[0] == None
0 False
1 False
Name: 0, dtype: bool
Run Code Online (Sandbox Code Playgroud)
.values
is
None
>>> df[0].values is None
False
Run Code Online (Sandbox Code Playgroud)
np.nan
.isnull()
>>> df[1].isnull()
0 False
1 True
Name: 1, dtype: bool
Run Code Online (Sandbox Code Playgroud)
np.isnan
>>> np.isnan(df[1])
0 False
1 True
Name: 1, dtype: bool
>>> np.isnan(df[1].values)
array([False, True])
>>> df[1].apply(lambda x: np.isnan(x))
0 False
1 True
Name: 1, dtype: bool
Run Code Online (Sandbox Code Playgroud)
is
或==
np.nan
>>> df[1] is np.nan
False
>>> df[1] == np.nan
0 False
1 False
Name: 1, dtype: bool
>>> df[1].values is np.nan
False
>>> df[1].values == np.nan
array([False, False])
>>> df[1].apply(lambda x: x is np.nan)
0 False
1 False
Name: 1, dtype: bool
>>> df[1].apply(lambda x: x == np.nan)
0 False
1 False
Name: 1, dtype: bool
Run Code Online (Sandbox Code Playgroud)
你可以使用applymap
一个lambda
检查一个element is None
如下,(构建不同的例子,在你原来的,None
将强制使用np.nan
,因为数据类型float
,您将需要一个object
类型列保持None
原样,或由@Evert评论,None
并且NaN
在数字类型列中无法区分):
df = pd.DataFrame([[None, 3], ["", np.nan]])
df
# 0 1
#0 None 3.0
#1 NaN
df.applymap(lambda x: x is None)
# 0 1
#0 True False
#1 False False
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
34569 次 |
最近记录: |