尝试实现缩放函数时的Python ValueError

时间:2017-12-06 20:10:37

标签: python pandas numpy data-science

我试图为pandas数据集实现自己的缩放功能。该函数遍历每个列,计算标准偏差和平均值,然后标准化每个值。它被封装为我的CustomScaler类中的方法:

    class CustomScaler:

        def __init__(self, df):
            self.df = df
            self.mean = 0
            self.std = 0

        def _standardize(self, value):
            return (value - self.mean) / self.std

        def transform(self):
            col_length = self.df.columns.values
            for i, column in enumerate(self.df.columns.values):
                self.mean = np.mean(self.df[column])
                self.std = np.std(self.df[column])
                print("Original mean of the column is {}".format(self.mean))
                print("Original standard deviation of the column is {}".format(self.std))

                try:
                    self.df[column] = self.df[column].apply(self._standardize)
                except ValueError as e:
                    print(e)
                    print("Error on column {}".format(column))
                    print(self.df[column].index)

                    duplicates = [item for item, count in Counter(self.df[column].index).items() if count > 1]


                    print(duplicates) # print duplicate indices for debugging

                    break
            return self.df.values

但是,我在其中一个列上收到了ValueError: cannot reindex from a duplicate axis error(让我们称之为PROBLEM COLUMN)。在数据集中有明显重复的索引实例 - print(duplicates)显示至少20-30个索引的列表。

我的问题是为什么只有一列出现错误?如果我使用apply()迭代列的每一行,是否应该在第一列上抛出此错误?

other SO posts对类似问题进行一些研究之后,很明显存在重复值。我尝试通过打印每列的self.df[column].index值来重现此错误,除了PROBLEM_COLUMN之外,它们看起来是相同的。

Pandas中的一列是否可能拥有与其他列不同的索引集?

0 个答案:

没有答案