检查dataframe列中的所有值是否都是相同的panda

2024-05-14 23:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想快速简单地检查数据帧中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')

有快速的方法吗?


Tags: importdataframepandasdataifnamesas条件
3条回答

使用np.unique更新

len(np.unique(df.counts))==1
False

或者

len(set(df.counts.tolist()))==1

或者

df.counts.eq(df.counts.iloc[0]).all()
False

或者

df.counts.std()==0
False

您可以使用^{}

df.counts.nunique() == 1

我认为nunique做的工作比必要的多得多。迭代可以在第一个差异处停止。这个简单通用的解决方案使用itertools

import itertools

def all_equal(iterable):
    "Returns True if all elements are equal to each other"
    g = itertools.groupby(iterable)
    return next(g, True) and not next(g, False)

all_equal(df.counts)

我们甚至可以使用它一次查找具有恒定内容的所有列:

constant_columns = df.columns[df.apply(all_equal)]

一种可读性稍强但性能较差的替代方案:

df.counts.min() == df.counts.max()

如有必要,在此处添加skipna=False

相关问题 更多 >

    热门问题