Python如何检查pandas中的DataFrame列是否包含范围内的所有数字

Python如何检查pandas中的DataFrame列是否包含范围内的所有数字,python,pandas,dataframe,Python,Pandas,Dataframe,所以我有一个列表,每个列的最小最大值。现在,我想检查数据框中的每一列是否都有最小-最大值之间的所有范围值 例如,如果我的范围是1-5,我想检查我的列中是否至少显示了1个1-5之间的数字 我希望有人能帮我找出最好的方法来检查它,我在网上看到了一些不适合我所寻找的东西,所以欢迎任何帮助 最小-最大列表:[[1,2],[2,4],[3,6],[101,103],[203,206],[2,3],[1,1]] self.df_smalltrain-是我的数据帧(忽略零,我不将0计为最小值) 我希望输出是

所以我有一个列表,每个列的最小最大值。现在,我想检查数据框中的每一列是否都有最小-最大值之间的所有范围值

例如,如果我的范围是1-5,我想检查我的列中是否至少显示了1个1-5之间的数字

我希望有人能帮我找出最好的方法来检查它,我在网上看到了一些不适合我所寻找的东西,所以欢迎任何帮助

最小-最大列表:[[1,2],[2,4],[3,6],[101,103],[203,206],[2,3],[1,1]]

self.df_smalltrain-是我的数据帧(忽略零,我不将0计为最小值)

我希望输出是最小-最大范围内的数字实际上没有显示在列表中 所以它将是一个列表,其中的数字并没有显示在每一列中

输出:[[2],[4],…]

到目前为止,我的基本代码是:

 def prepare_unique_data(self):
    for (column_name,column_data) in self.df_smalltrain.iteritems():
        print('Column Name : ', column_name)
        print('Column Contents : ', column_data.values)

    for i in range(len(self.min_max)):
        min = self.min_max[i][0]
        max = self.min_max[i][1]
        print(f"{min}  {max} ")

您可以使用以下函数来实现这一点,您需要为其提供列_数据和适当的最大值和最小值


请将示例数据和预期输出发布到此问题。@ScottBoston我在中尝试实现时添加了一个示例,但遇到了以下错误:AttributeError:'numpy.ndarray'对象没有属性'unique'。是什么引起的?我像这样调用函数:print(self.value\u range\u exists(column\u data.values,min,max))我已经更新了它,现在如果其中一列不符合您的条件,您将得到一个异常。请注意,self.min\u max、self.df\u smalltrain.columns应具有相同的长度
def prepare_unique_data(self):
    for [min, max], col in zip(self.min_max, self.df_smalltrain.columns):
        assert self.value_range_exists(self.df_smalltrain[col], min, max)

def value_range_exists(self, series, min_value, max_value):
   current_values = series.unique()
   expected_values = list(range(min_value, max_value + 1))
   return set(current_values) == set(expected_value)