编写一个函数,通过删除指定列的四分位间距内的行来子集数据框

时间:2018-08-16 01:23:52

标签: python pandas dataframe

这是完整的问题:

编写一个通过删除指定列的四分位间距内的行来子集数据框的函数。

该函数作为输入:

A:Pandas_Dataframe(例如,使用NHL_GoaliesDF)

B。列名¶

预期输出:

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

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

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

现在的问题是我该如何处理?任何帮助将不胜感激!

0 个答案:

没有答案