Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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
使用for循环操作python函数输出_Python_Pandas_For Loop_Scipy - Fatal编程技术网

使用for循环操作python函数输出

使用for循环操作python函数输出,python,pandas,for-loop,scipy,Python,Pandas,For Loop,Scipy,在stats.scipy中,我对数据帧中的每个数字列应用了变异系数测试,我希望筛选输出,以便它只显示值大于0且不丢失的列。这是我的密码: x = df.select_dtypes(exclude=['object']).apply(stats.variation)*100 for i in x: if i != 'NaN' and i != 0: print i 它仍然返回NaN和0的值。我怎样才能解决这个问题?另外,如何格式化它,使循环返回变量的名称和数值 编辑:

在stats.scipy中,我对数据帧中的每个数字列应用了变异系数测试,我希望筛选输出,以便它只显示值大于0且不丢失的列。这是我的密码:

x = df.select_dtypes(exclude=['object']).apply(stats.variation)*100

for i in x:
    if i != 'NaN' and i != 0:
        print i
它仍然返回NaN和0的值。我怎样才能解决这个问题?另外,如何格式化它,使循环返回变量的名称和数值

编辑: 这是我存储在x中的函数的输出:

 var_1               NaN
 var_2               3.809518
 var_5               7.031835
 var_10              20.190090
 var_20              21.217053
 var_30              20.806000
我想格式化输出,使var_1不会显示出来,我想你需要检查
NaN
,然后检查
0
并返回所有
True
。最后一次使用时:

样本:

x = pd.DataFrame({'A':[1,0,0],
                   'B':[4,np.nan,6],
                   'C':[7,8,9]})

print (x)
   A    B  C
0  1  4.0  7
1  0  NaN  8
2  0  6.0  9

print (x.notnull() & (x != 0))
       A      B     C
0   True   True  True
1  False  False  True
2  False   True  True

print ((x.notnull() & (x != 0)).all())
A    False
B    False
C     True
dtype: bool

mask = (x.notnull() & (x != 0)).all()
print (x.loc[:, mask])
   C
0  7
1  8
2  9
编辑:

如果
x
系列
使用:

x = pd.Series([np.nan, 1, 0, 0, 5, np.nan])
print (x)
0    NaN
1    1.0
2    0.0
3    0.0
4    5.0
5    NaN
dtype: float64

print (x[x.notnull() & (x != 0)])
1    1.0
4    5.0
dtype: float64
编辑1:

x = pd.Series([np.nan, 3.809518, 7.031835000000001, 20.190089999999998, 21.217053, 20.806], 
              index=['var_1', 'var_2', 'var_5', 'var_10', 'var_20', 'var_30'])
print (x)
var_1           NaN
var_2      3.809518
var_5      7.031835
var_10    20.190090
var_20    21.217053
var_30    20.806000
dtype: float64

print (x.notnull() & (x != 0))
var_1     False
var_2      True
var_5      True
var_10     True
var_20     True
var_30     True
dtype: bool

print (x[x.notnull() & (x != 0)])
var_2      3.809518
var_5      7.031835
var_10    20.190090
var_20    21.217053
var_30    20.806000
Name: 1, dtype: float64

在函数输出上尝试了您的代码,我收到了一条错误消息:索引器太多,
x.info()
?x.info()返回错误。类型(x)是pandas.core.series.series。我运行了该代码,然后在答案中使用了掩码代码,它只返回一个空的DataFrameMate。抱歉,我尝试了编辑代码,但也不起作用
x = pd.Series([np.nan, 3.809518, 7.031835000000001, 20.190089999999998, 21.217053, 20.806], 
              index=['var_1', 'var_2', 'var_5', 'var_10', 'var_20', 'var_30'])
print (x)
var_1           NaN
var_2      3.809518
var_5      7.031835
var_10    20.190090
var_20    21.217053
var_30    20.806000
dtype: float64

print (x.notnull() & (x != 0))
var_1     False
var_2      True
var_5      True
var_10     True
var_20     True
var_30     True
dtype: bool

print (x[x.notnull() & (x != 0)])
var_2      3.809518
var_5      7.031835
var_10    20.190090
var_20    21.217053
var_30    20.806000
Name: 1, dtype: float64