Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 获取Dataframe列中满足条件的值的索引_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 获取Dataframe列中满足条件的值的索引

Python 获取Dataframe列中满足条件的值的索引,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,嘿,伙计们,第一次在这里发帖,所以我会尽量提供更多的细节,而不会让yall感到无聊。感谢您提前阅读 所以我有一个大约50K行和5列数据帧格式的数据集。我通过以下命令从csv文件中读取值 df=pd.read_csv(path,usecols=inputs) 输入是与csv文件中的列相对应的字符串列表。我正在分析一堆电影,所以输入看起来像 inputs=['revenue','budget','rating','popularity','runtime'] 我想通过删除所有零值和异常值来“清理

嘿,伙计们,第一次在这里发帖,所以我会尽量提供更多的细节,而不会让yall感到无聊。感谢您提前阅读

所以我有一个大约50K行和5列数据帧格式的数据集。我通过以下命令从csv文件中读取值

df=pd.read_csv(path,usecols=inputs)
输入是与csv文件中的列相对应的字符串列表。我正在分析一堆电影,所以输入看起来像

inputs=['revenue','budget','rating','popularity','runtime']
我想通过删除所有零值和异常值来“清理”这个数据帧。我用下面的代码段删除了所有零值(输入是我正在读取的csv中所有列名称的列表)

df = df[(df[inputs] != 0).all(axis=1)]
看起来程序正确地删除了所有的零。它从数据帧中删除了所有的零,并使新的长度约为5k。我这样做异常值删除

  for column in inputs:
    z_scores=abs(stats.zscore(df[column]))
    indexNames=df[(z_scores>3.0)].index.tolist()
      for index in indexNames:
          file.write('\n {0:s} outlier found with z-score {1:.2f}'.format(column, z_scores[index]))
    df.drop(indexNames , inplace=True)
我知道有一种更简单、更有效的方法来完成上面的代码段,但我的目标是将所有异常值写入文本文件。这就是为什么下面的代码段就是我在这里发布的原因。z_分数数组的长度也约为5k

file.write('\n {0:s} outlier found with z-score {1:.2f}'.format(column, z_scores[index]))
看起来indexNames变量正在从旧数据帧中查找满足z-score条件的值的索引,而不删除零。我知道这一点,因为当我打印indexNames时,我得到的索引超过5k,并且在10-50k范围内。当新的len除零后df的gth仅为5k

如果我将indexNames固定到它找到满足新Dataframe而不是旧Dataframe的z-score条件的值的索引的位置,那么file.write语句应该正常运行


如果还有什么我可以给你的,请告诉我。我也可以把我所有的代码粘贴到某个地方,但是不能发布csv文件。

Hi Austin,很棒的第一篇文章。你可能想包括一个原始数据的样本,或者更好的一个dataframe函数,它可以构建你的datafram,这样我们可以更好地帮助你。例如,df=pd.dataframe({'inputs':[..@Gorlomi谢谢你让我知道。我更新了帖子,添加了一些你想要的东西