我正在从DataQuest中进行练习,我试图找到包含字符串的列的中位数。
在房屋数据框中该列为“ TotRms AbvGrd”。该列的示例为:[4、6、2、6、4、10或更多,等等。]
comparator = lambda x : int(x.split()[0]) if type(x) is str else x
def median_calc(array):
sorted_list = sorted(array, key=comparator)
if len(sorted_list) % 2 == 1:
median = sorted_list[int((len(array)/2))]
return median
else:
middle_indices = [int((len(sorted_list)/2)), int((len(sorted_list)/2 + 1))]
median = sum(sorted_list[middle_indices]) / 2
return median
median = median_calc(houses['TotRms AbvGrd'])
在这方面我很难在else语句中找到索引的值。我应该如何查找给定索引的值?
TypeError:列表索引必须是整数,而不是元组
答案 0 :(得分:0)
由于房屋看起来像是熊猫的数据框,因此您可以使用内置函数median
。
一个例子:
df = pd.DataFrame({'TotRms AbvGrd': ['4', '6', '2', 7, 8, '10']})
df['TotRms AbvGrd'].median()
# 6.5