簡體   English   中英

Python Pandas:對所有列進行分組並計算不同的價值?

[英]Python Pandas: Group by and count distinct value over all columns?

我有df

      column1  column2  column3  column4
0    name        True        True         NaN
1    name        NaN        True         NaN
2   name1        NaN        True         True 
3   name1        True        True       True 

我想分組並在所有列中計算不同的價值我正在嘗試:

df.groupby('column1').nunique()

但我收到此錯誤。

AttributeError:“ DataFrameGroupBy”對象沒有屬性“ nunique”

有人有建議嗎?

您可以為Series使用stack ,然后對Series.groupby使用SeriesGroupBy.nunique

df1 = df.set_index('column1').stack()

print (df1.groupby(level=[0,1]).nunique(dropna=False).unstack())

樣品:

print (df)
  column1 column2 column3 column4
0    name    True    True     NaN
1    name     NaN    True     NaN
2   name1     NaN    True    True
3   name1    True    True    True

df1 = df.set_index('column1').stack(dropna=False)
print (df1)
column1         
name     column2    True
         column3    True
         column4     NaN
         column2     NaN
         column3    True
         column4     NaN
name1    column2     NaN
         column3    True
         column4    True
         column2    True
         column3    True
         column4    True
dtype: object

print (df1.groupby(level=[0,1]).nunique(dropna=False).unstack(fill_value=0))
         column2  column3  column4
column1                           
name           2        1        1
name1          2        1        1

print (df1.groupby(level=[0,1]).nunique().unstack(fill_value=0))
         column2  column3  column4
column1                           
name           1        1        0
name1          1        1        1

雙另一種解決方案apply

print (df.groupby('column1')
         .apply(lambda x: x.iloc[:,1:].apply(lambda y: y.nunique(dropna=False))))
         column2  column3  column4
column1                           
name           2        1        1
name1          2        1        1

print (df.groupby('column1').apply(lambda x: x.iloc[:,1:].apply(lambda y: y.nunique())))
         column2  column3  column4
column1                           
name           1        1        0
name1          1        1        1

暫無
暫無

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

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