检查Pandas列是否仅包含0或1

epggiuax  于 2023-02-11  发布在  其他
关注(0)|答案(3)|浏览(320)

我想知道是否有一种方法可以检查Pandas列是否只包含0或1。这可以使用df.groupby('col').count()来完成,然后验证是否只有两个索引,并检查0和1是否是索引的一部分。有更好的方法吗?

rxztt3cl

rxztt3cl1#

如果所有值均为True s x Series.all,则使用Series.isin进行测试:
它返回TrueFalse标志。在这里查看它的实际操作。让我们考虑以下 Dataframe :

df = pd.DataFrame({'col1':[0,1,0],
                   'col2':[2,3,1]})
print (df)
   col1  col2
0     0     2
1     1     3
2     0     1

test = df['col1'].isin([0,1]).all()
True

test = df['col2'].isin([0,1]).all()
False
2nbm6dog

2nbm6dog2#

您可以使用unique(),它将返回列中的所有唯一值
例如:

#List unique values in the df['name'] column
df.name.unique()

这将返回该列中存在的唯一值的数组

8i9zcol2

8i9zcol23#

可以将set运算与set.issubset一起使用:

{0, 1}.issuperset(df['col'])

示例:

df = pd.DataFrame({'col': [0, 1, 0]})

{0, 1}.issuperset(df['col'])
# True

如果有多个列:

df = pd.DataFrame({'A': [0, 1, 2],
                   'B': [1, 1, 1],
                   'C': [0, 1, 0]})

df.apply({0, 1}.issuperset)
# A    False
# B     True
# C     True
# dtype: bool

相关问题