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计为最小值) 我希望输出是最小-最大范围内的数字实际上没有显示在列表中 所以它将是一个列表,其中的数字并没有显示在每一列中 输出:[[2],[4],…] 到目前为止,我的基本代码是: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计为最小值) 我希望输出是
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)