Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果某列中有NAN,如何打印NAN而不是0_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如果某列中有NAN,如何打印NAN而不是0

Python 如果某列中有NAN,如何打印NAN而不是0,python,python-3.x,pandas,Python,Python 3.x,Pandas,我试图在每个文件中检查我的产品的条件为真的次数,但只需要检查满足条件的时间以及填充两列的时间,因此我使用此代码 cnt = big_frame.groupby('Symbol').apply(lambda g:((g.A001 > g.A002) & g.A001.notnull() & g.A002.notnull()).sum()) df['Data_Count'] = df.Contract.map(cnt) 这会检查条件,如果两个列都已填充,并且对我来说效果良好,

我试图在每个文件中检查我的产品的条件为真的次数,但只需要检查满足条件的时间以及填充两列的时间,因此我使用此代码

cnt = big_frame.groupby('Symbol').apply(lambda g:((g.A001 > g.A002) & g.A001.notnull() & g.A002.notnull()).sum())
df['Data_Count'] = df.Contract.map(cnt)
这会检查条件,如果两个列都已填充,并且对我来说效果良好,但当它在任何列中遇到NAN时,它会在
cnt
中打印0,然后在“Data\u Count”中使用
cnt
进行映射,这对我来说不好,因为我以后必须计算百分比

所以,我想检查
A001
A002
,如果其中任何一个有NAN,它应该在cnt列中打印NAN,而不是0。谢谢

编辑:

这是我的数据集(仅跳过了所有其他行和列的相关列)

所以根据这个,我希望cnt柱是

 cnt
 NAN
 2
 NAN
 NAN
 NAN
 0
 2
 0
但现在它正在打印0而不是NAN

 0 
 2
 0
 0
 0
 0
 2
 0

为什么不将0替换为NAN呢

df['Data_Count'].替换(0,np.nan)
但你也可以这样做:

cnt=big\u frame.groupby('Symbol')。应用(lambda g:True if((g.A001>g.A002)和g.A001.notnull()&g.A002.notnull()).sum()否则为np.nan)
df['Data_Count']=df.Contract.map(cnt)
您可以执行以下操作(为清晰起见,分两步进行):

结果是:

Symbol
O.H21    NaN
O.H22    2.0
O.M21    NaN
O.M22    0.0
O.U20    NaN
O.U21    NaN
O.Z20    2.0
O.Z21    0.0
Name: cond, dtype: float64

请提供样本数据和预期输出,以提高您获得回复的机会。问题编辑否,在某些情况下A001g.A002).sum()如果(g.A001.notnull()&g.A002.notnull())else np.Nan”但我不知道熊猫是否会接受这样的东西,当然。
df["cond"] = np.where(df.A001.isna() | df.A002.isna(), np.NaN, df.A001 > df.A002)

def foo(x):
    if x.isna().all():
        return np.NaN
    else: 
        return x.sum()

df.groupby('Symbol')["cond"].apply(foo)
Symbol
O.H21    NaN
O.H22    2.0
O.M21    NaN
O.M22    0.0
O.U20    NaN
O.U21    NaN
O.Z20    2.0
O.Z21    0.0
Name: cond, dtype: float64