我有一个包含字符的数据帧 – 我想要一个布尔结果的行,告诉我该行的所有列是否具有相同的值.
例如,我有
df = [ a b c d 0 'C' 'C' 'C' 'C' 1 'C' 'C' 'A' 'A' 2 'A' 'A' 'A' 'A' ]
我想要的结果是
0 True 1 False 2 True
我已经尝试了,但似乎我只能检查所有都等于一个字母.我唯一可以想到的方法是通过在每一行做一个独特的,看看是否等于1?提前致谢.
解决方法
我认为最干净的方法是使用eq来检查第一列的所有列:
In [11]: df
Out[11]:
a b c d
0 C C C C
1 C C A A
2 A A A A
In [12]: df.iloc[:,0]
Out[12]:
0 C
1 C
2 A
Name: a,dtype: object
In [13]: df.eq(df.iloc[:,0],axis=0)
Out[13]:
a b c d
0 True True True True
1 True True False False
2 True True True True
现在你可以使用全部(如果它们都等于第一个项目,它们都是相等的):
In [14]: df.eq(df.iloc[:,axis=0).all(1) Out[14]: 0 True 1 False 2 True dtype: bool