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 次 |
| 最近记录: |