自定义函数,用于计算中值(带字符串)

时间:2019-02-13 15:12:01

标签: python dataframe

我正在从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:列表索引必须是整数,而不是元组

1 个答案:

答案 0 :(得分:0)

由于房屋看起来像是熊猫的数据框,因此您可以使用内置函数median

一个例子:

df = pd.DataFrame({'TotRms AbvGrd': ['4', '6', '2', 7, 8, '10']})
df['TotRms AbvGrd'].median()
# 6.5