我想快速简单地检查一个数据帧中counts
的所有列值是否相同:
在:
import pandas as pd
d = {'names': ['Jim', 'Ted', 'Mal', 'Ted'], 'counts': [3, 4, 3, 3]}
pd.DataFrame(data=d)
出局:
names counts
0 Jim 3
1 Ted 4
2 Mal 3
3 Ted 3
我只需要一个简单的条件,即if all counts = same value
然后print('True')
。
有快速的方法吗?
答案 0 :(得分:7)
您可以使用nunique
:
df.counts.nunique() == 1
答案 1 :(得分:5)
df.counts.is_unique
Out[541]: False
答案 2 :(得分:0)
我认为nunique
的工作量超出了必要。您所需要的就是最小值等于最大值:
df.counts.min() == df.counts.max()
如有必要,添加skipna=False
。
甚至可以使用它甚至一次性查找具有恒定内容的 all 列:
eq = df.apply(lambda s: s.min() == s.max())
constant_columns = eq[eq].index
答案 3 :(得分:0)
我更喜欢:
df['counts'].eq(df['counts'].iloc[0]).all()
我发现它最容易阅读,并且适用于所有值类型。根据我的经验,我也发现它足够快。