簡體   English   中英

檢查組中的值是否在Pandas中相等

[英]Check if values within a group are equal in Pandas

我有類似下面的'DataFrame`:

>>> df=pd.DataFrame(index=['A','A','A','B','B','C','C','C'])
>>> df['Value1']=[1,1,1,2,1,4,4,4]
>>> df['Value2']=[1,2,3,4,5,6,7,8]
>>> df
   Value1  Value2
A       1       1
A       1       2
A       1       3
B       2       4
B       1       5
C       4       6
C       4       7
C       4       8
>>> 

DataFrame的索引代表3個不同的組。 我想檢查組中的列值是否都相等。 我目前的方法和所需的輸出如下:

>>> result_list=[]
>>> for Col in df.columns:
...     result=df.groupby(level=0)[Col].apply(lambda x: len(set(x))==1)
...     result_list.append(result)
... 
>>> 
>>> final=pd.concat(result_list,1)
>>> final
  Value1 Value2
A   True  False
B  False  False
C   True  False
>>> 

這是最好的方法嗎? 我想知道是否可以這樣做而無需遍歷我的DataFrame的列。

另外使用len(set(x)==1)確定組中所有項目是否相等的最佳方法?

df.groupby(level=0).agg(lambda x: len(set(x)) == 1)

  Value1 Value2
A   True  False
B  False  False
C   True  False

SImilar對Jansen的回答,但沒有建立集合。

df.groupby(level=0).agg(lambda s:np.unique(s).size==1)

    Value1  Value2
A   True    False
B   False   False
C   True    False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM