这是完整的问题:
编写一个通过删除指定列的四分位间距内的行来子集数据框的函数。
该函数作为输入:
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
现在的问题是我该如何处理?任何帮助将不胜感激!