将一列分组,然后将另一列与条件相加?

时间:2019-05-20 16:11:14

标签: python pandas data-science

我想知道是否有可能在对满足条件的另一列的值进行计数时对一列进行分组。因为我的数据集有点怪异,所以我创建了一个类似的数据集:

declarations: [
...
CustomPipe,
...
],
providers: [
...
CustomPipe,
...
]

说,我要按国籍分组,并计算该国没有任何书籍(书籍== 0)的人数。

因此,我期望输出类似以下内容:

import pandas as pd

raw_data = {'name': ['John', 'Paul', 'George', 'Emily', 'Jamie'], 
            'nationality': ['USA', 'USA', 'France', 'France', 'UK'],     
            'books': [0, 15, 0, 14, 40]}  
df = pd.DataFrame(raw_data, columns = ['name', 'nationality', 'books'])

我使用filter,agg尝试了groupby的大多数变体,但似乎什么也没用。

预先感谢, BBQuercus:)

2 个答案:

答案 0 :(得分:6)

IIUC:

df.books.eq(0).astype(int).groupby(df.nationality).sum()

nationality
France    1
UK        0
USA       1
Name: books, dtype: int64

答案 1 :(得分:4)

使用:

df.groupby('nationality')['books'].apply(lambda x: x.eq(0).any().astype(int))

nationality
France    1
UK        0
USA       1
Name: books, dtype: int64