首页 > 解决方案 > 编写一个函数,通过删除指定列的四分位数区域内的行来子集数据帧

问题描述

这是完整的问题:

编写一个函数,通过删除指定列的四分位数区域内的行来子集数据帧。

该函数作为输入:

A:Pandas_Dataframe(例如使用 NHL_GoaliesDF)

B. 列名¶

预期输出:

A. 输出是一个删除指定列 IQR 之外的行的 DataFrame。

所以这是我到目前为止所拥有的:

NHL_Goalies= 
pd.read_excel('NHLGoalies2016_2017.xls',na_values='',sheetname=0) 

import pandas as pd
def pandas_filter():
    df= NHL_Goalies
    column= "Ht"
    q1 = df[column].quantile(0.25)
    q3 = df[column].quantile(0.75)
    iqr = (df[column] <= q1) | (df[column] >= q3)
    return df[iqr]

pandas_filter()

上面的函数工作得很好,并打印出问题的内容。但是,如果我合并 df 和 column 变量的用户输入,我会得到以下信息:

def pandas_filter():
   df= input()
   column= input()
   q1 = df[column].quantile(0.25)
   q3 = df[column].quantile(0.75)
   iqr = (df[column] <= q1) | (df[column] >= q3)
   return df[iqr]

pandas_filter()

TypeError Traceback (most recent call last)
<ipython-input-17-b7d8feaf055e> in <module>()
  7     return df[iqr]
  8 
----> 9 pandas_filter()

<ipython-input-17-b7d8feaf055e> in pandas_filter()
  2     df= input()
  3     column= input()
----> 4     q1 = df[column].quantile(0.25)
  5     q3 = df[column].quantile(0.75)
  6     iqr = (df[column] <= q1) | (df[column] >= q3)

TypeError: string indices must be integer

现在的问题是我该怎么做?任何帮助是极大的赞赏!

标签: pythonpandasdataframe

解决方案


推荐阅读