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
Python 在数据帧操作中处理零或非_Python_Pandas_Nan_Zero - Fatal编程技术网

Python 在数据帧操作中处理零或非

Python 在数据帧操作中处理零或非,python,pandas,nan,zero,Python,Pandas,Nan,Zero,我有一个数据帧(df),如下所示,其中每个列从最大到最小排序,用于频率分析。由于每列的长度不同,因此会留下一些值,即0或NaN值 08FB006 08FC001 08FC003 08FC005 08GD004 ---------------------------------------------- 0 253 872 256 11.80 2660 1 250 850 255 10.60 2510 2 246

我有一个数据帧(df),如下所示,其中每个列从最大到最小排序,用于频率分析。由于每列的长度不同,因此会留下一些值,即0或NaN值

   08FB006 08FC001 08FC003 08FC005 08GD004
----------------------------------------------
0   253      872    256      11.80    2660
1   250      850    255      10.60    2510
2   246      850    241      10.30    2130
3   241      827    235      9.32     1970
4   241      821    229      9.17     1900
5   232       0     228      8.93     1840
6   231       0     225      8.05     1710
7   0         0     225       0       1610
8   0         0     224       0       1590
9   0         0      0        0       1590
10  0         0      0        0       1550
我需要执行以下计算,就好像每列有不同的长度或记录数(忽略零值)。我尝试过使用NaN,但由于某些原因,无法对NaN值进行操作

以下是我尝试对df列所做的操作:

shape_list1=[]
location_list1=[]
scale_list1=[]

for column in df.columns:
    shape1, location1, scale1=stats.genpareto.fit(df[column])

    shape_list1.append(shape1)
    location_list1.append(location1)
    scale_list1.append(scale1)

假设所有值均为正值(如您的示例和描述所示),请尝试:

这将过滤每一列,以便仅对正值进行操作。 或者,如果允许负值

stats.genpareto.fit(df[df[column] != 0][column])

语法很混乱,但会发生变化

shape1, location1, scale1=stats.genpareto.fit(df[column])


说明:
df[column].nonzero()
返回一个大小为
(1,)
的元组,其唯一元素element
[0]
是一个numpy数组,该数组包含
df
为非零的索引标签。要通过这些非零标签索引
df[column]
,您可以使用
df[column][df[column].nonzero()[0]]

谢谢您的解释:)@andersource的语法比我的干净多了!
shape1, location1, scale1=stats.genpareto.fit(df[column])
shape1, location1, scale1=stats.genpareto.fit(df[column][df[column].nonzero()[0]])