我有以下 Dataframe
A B ... 0 1 1 1 1 2 2 1 3 0 2 1 1 2 2 2 2 3
我想检查数据框是否是每列中条目的完整组合。在上面的数据框中就是这种情况。A = {1,2} B = {1,2,3}并且数据框包含所有可能的组合。下面的示例将导致false。
A B 0 1 1 1 1 2 0 2 1
列数应灵活。非常感谢您的帮助!
u3r8eeie1#
df = pd.DataFrame({'A': [1,1,1,2,2,2], 'B': [1,2,3,1,2,3]})
创建所有列中包含唯一值的所有组合的数据框
uniques = [df[i].unique().tolist() for i in df.columns] df_combo = pd.DataFrame(product(*uniques), columns = df.columns) print(df_combo) A B 0 1 1 1 1 2 2 1 3 3 2 1 4 2 2 5 2 3
测试两个 Dataframe 是否包含相同的元素
df.equals(df_combo) True
对于假场景,
df = pd.DataFrame({'A': [1,1,2], 'B': [1,2,1]}) df_combo A B 0 1 1 1 1 2 2 2 1 3 2 2 df.equals(df_combo) False
tyu7yeag2#
不需要生成新 Dataframe 的另一选项将是仅将去重复组合的数量与数量唯一性的乘积进行比较:
df = pd.DataFrame({'A': [1,1,1,2,2,2], 'B': [1,2,3,1,2,3], 'C': [1,2,3,4,5,6]}) df[['A','B']].drop_duplicates().shape[0] == df[['A','B']].nunique().prod() True
2条答案
按热度按时间u3r8eeie1#
创建所有列中包含唯一值的所有组合的数据框
测试两个 Dataframe 是否包含相同的元素
对于假场景,
tyu7yeag2#
不需要生成新 Dataframe 的另一选项将是仅将去重复组合的数量与数量唯一性的乘积进行比较: