相关疑难解决方法(0)

如果系列是全纳,或者剩下的非纳米条目是零,如何有效地填充(0)?

鉴于我有一个pandas系列,如果所有值都是NaN或者所有值都是零或NaN ,我想用零填充NaN.

例如,我想用零填充以下系列中的NaN.

0       0
1       0
2       NaN
3       NaN
4       NaN
5       NaN
6       NaN
7       NaN
8       NaN
Run Code Online (Sandbox Code Playgroud)

但是,我希望fillna(0)以下系列:

0       0
1       0
2       2
3       0
4       NaN
5       NaN
6       NaN
7       NaN
8       NaN
Run Code Online (Sandbox Code Playgroud)

我正在查看文档,似乎我可以使用pandas.Series.value_counts来确保值只有0和NaN,然后​​只需调用fillna(0).换句话说,我想检查是否设置(s) .unique().astype(str)).issubset(['0.0','nan']),THEN fillna(0),否则不.

考虑到熊猫有多强大,似乎可能有更好的方法来做到这一点.有没有人有任何建议干净有效地做到这一点?

cᴏʟᴅsᴘᴇᴇᴅ的潜在解决方案

if s.dropna().eq(0).all():
    s = s.fillna(0)
Run Code Online (Sandbox Code Playgroud)

python multiple-conditions conditional-statements pandas fillna

8
推荐指数
1
解决办法
311
查看次数

将具有多个纳米值的pandas系列减少到一组给出多个nan值

我期待得到,set([nan,0,1])但我得到set([nan, 0.0, nan, 1.0]):

>>> import numpy as np
>>> import pandas as pd
>>> l= [np.nan,0,1,np.nan]
>>> set(pd.Series(l))
set([nan, 0.0, nan, 1.0])
>>> set(pd.Series(l).tolist())
set([nan, 0.0, nan, 1.0])
>>> set(l)
set([nan, 0, 1])
Run Code Online (Sandbox Code Playgroud)

python numpy set nan pandas

4
推荐指数
1
解决办法
637
查看次数

Python的'set'运算符不适用于numpy.nan

我注意到将NaN值列表转换为集合时出现问题:

import pandas as pd
import numpy as np

x = pd.DataFrame({'a':[None,None]})
x_numeric = pd.to_numeric(x['a']) #converts to numpy.float64
set(x_numeric)
Run Code Online (Sandbox Code Playgroud)

这应该返回{nan}但是返回{nan,nan}.但是,这样做:

set([numpy.nan, numpy.nan])
Run Code Online (Sandbox Code Playgroud)

返回预期的{nan}.前者显然是类numpy.float64,而后者默认是类float.

知道为什么set()不能与numpy.float64 NaN值一起使用吗?我正在使用Pandas版本0.18和Numpy版本1.10.4.

python numpy nan pandas

4
推荐指数
1
解决办法
539
查看次数