簡體   English   中英

在 pandas dataframe 中使用.groupby 計算唯一值

[英]counting unique values using .groupby in pandas dataframe

我有一個 dataframe,當我運行我的代碼時,它返回所有 Nan 而不是返回計數值。 我確定這很簡單,但我無法弄清楚。 我試圖在每個位置獲得唯一數量的物種。 我想在 output 的新專欄中列出物種 [2,2,1,1,2,2,1,1]

import pandas as pd

df = pd.DataFrame({
         'ID': [1, 2, 3, 4, 5, 6, 7, 8],
         'location': ['A', 'A', 'C', 'C', 'E', 'E', 'E', 'E'],
         'Species': ['Cat', 'Cat', 'Dog', 'Cat', 'Cat', 'Cat', 'Dog', 'Bird'],
         'Count': [2,2,2,2,4,4,4,4]
})

def abundance(data):
    data["Abundance"] = data[data.Species.notnull()].groupby('location')['Species'].unique()

abundance(df)
print(df)
````````````````````
   ID location Species  Count Abundance
0   1        A     Cat      2       NaN
1   2        A     Cat      2       NaN
2   3        C     Dog      2       NaN
3   4        C     Cat      2       NaN
4   5        E     Cat      4       NaN
5   6        E     Cat      4       NaN
6   7        E     Dog      4       NaN
7   8        E    Bird      4       NaN

我相信您想要計數每對location, Species 而且,為了將groupby output 分配回原來的 dataframe,我們通常使用transform

df['Abundance'] = df.groupby(['location','Species']).Species.transform('size')

Output:

   ID location Species  Count  Abundance
0   1        A     Cat      2          2
1   2        A     Cat      2          2
2   3        C     Dog      2          1
3   4        C     Cat      2          1
4   5        E     Cat      4          2
5   6        E     Cat      4          2
6   7        E     Dog      4          1
7   8        E    Bird      4          1
df.groupby(['location','Species']).Species.value_counts().to_frame('Abundance')



                            Abundance
location Species Species           
A        Cat     Cat              2
C        Cat     Cat              1
         Dog     Dog              1
E        Bird    Bird             1
         Cat     Cat              2
         Dog     Dog              1

我相信您應該嘗試使用 output 中的列對數據框進行分組,

>>> df[df.Species.notnull()].groupby(['location','Species']).count()
                  ID  Count
location Species           
A        Cat       2      2
C        Cat       1      1
         Dog       1      1
E        Bird      1      1
         Cat       2      2
         Dog       1      1

暫無
暫無

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

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