python - 在 pandas 数据框中使用 .groupby 计算唯一值

标签 python pandas dataframe unique

我有一个数据框,当我运行代码时,它返回所有 Nan,而不是返回计数值。 我确信这很简单,但我无法弄清楚。我试图在每个地点获得独特数量的物种。我希望新列输出物种计数 [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

最佳答案

我相信您想要计算每对位置、物种。此外,要将 groupby 输出分配回原始数据帧,我们通常使用 transform:

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

输出:

   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

关于python - 在 pandas 数据框中使用 .groupby 计算唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65334699/

相关文章:

python - Django ORM : window function with subsequent filtering

Python pandas dataframe : interpolation using dataframe data without updating it. 获取插值即可。

python - 在 Pandas lambda 函数中测试字典条目

python - pandas 中的条件成对计算

python-3.x - 合并两个 pandas 数据框,并在由管道分隔的列中输入匹配的条目

python - 如何使用 Python 获取数据库中最后插入记录的主键

python - CNN 使用具有显着尺寸差异的图像

python - Django 正则表达式不匹配

python - 枚举 PySpark 中的连续相等值组

python - 如何提取日期条件下的行