在pandas数据帧中的每列上应用函数

时间:2016-08-09 10:36:22

标签: python pandas dataframe

如何以更多熊猫方式编写以下功能:

     def calculate_df_columns_mean(self, df):
        means = {}
        for column in df.columns.columns.tolist():
            cleaned_data = self.remove_outliers(df[column].tolist())
            means[column] = np.mean(cleaned_data)
        return means

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在我看来,对列的迭代是不必要的:

def calculate_df_columns_mean(self, df):
    cleaned_data = self.remove_outliers(df[column].tolist())
    return cleaned_data.mean()

假设remove_outliers仍返回df

,上述内容应该足够了

修改

我认为以下内容应该有效:

def calculate_df_columns_mean(self, df):
    return df.apply(lambda x: remove_outliers(x.tolist()).mean()

答案 1 :(得分:1)

使用dataFrame.apply(func, axis=0)

# axis=0 means apply to columns; axis=1 to rows
df.apply(numpy.sum, axis=0) # equiv to df.sum(0)