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

Hel*_*rth 7 python dataframe python-3.x pandas

我想快速方便地检查counts数据框中所有列的值是否相同:

在:

import pandas as pd

d = {'names': ['Jim', 'Ted', 'Mal', 'Ted'], 'counts': [3, 4, 3, 3]}
pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

出:

  names  counts
0   Jim       3
1   Ted       4
2   Mal       3
3   Ted       3
Run Code Online (Sandbox Code Playgroud)

我想只是一个简单的条件if all counts = same value,然后print('True')

有快速的方法吗?

yat*_*atu 12

您可以使用nunique

df.counts.nunique() == 1
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 10

更新使用 np.unique

len(np.unique(df.counts))==1
False
Run Code Online (Sandbox Code Playgroud)

或者

len(set(df.counts.tolist()))==1
Run Code Online (Sandbox Code Playgroud)

或者

df.counts.eq(df.counts.iloc[0]).all()
False
Run Code Online (Sandbox Code Playgroud)

或者

df.counts.std()==0
False
Run Code Online (Sandbox Code Playgroud)

  • 这: df.counts.is_unique - 对我不起作用,但 df.counts.nunique() == 1 有效。我在 Windows 上运行 python 2.7。 (2认同)
  • 错误答案:`is_unique` 检查列中的值是否唯一,即没有重复项。询问的是检查列中的所有值是否相同,这是完全不同的。 (2认同)

Mit*_*tar 6

我更喜欢:

df['counts'].eq(df['counts'].iloc[0]).all()
Run Code Online (Sandbox Code Playgroud)

我发现它最容易阅读,并且适用于所有值类型。根据我的经验,我也发现它足够快。

  • 警告:如果 df['counts'] 全部为 None,则将返回 False。 (3认同)