Groupby 一列并计算另一列的条件?
Posted
技术标签:
【中文标题】Groupby 一列并计算另一列的条件?【英文标题】:Groupby one column and count another column with a condition? 【发布时间】:2019-10-07 00:58:08 【问题描述】:我想知道是否可以在计算满足条件的另一列的值时对一列进行分组。因为我的数据集有点奇怪,所以我创建了一个类似的:
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'])
假设,我想按国籍分组并计算没有来自该国家/地区的任何书籍(书籍 == 0)的人数。
因此,我希望输出类似于以下内容:
nationality
USA 1
France 1
UK 0
我尝试了 groupby 的大多数变体,使用过滤器、agg,但似乎没有得到任何有效的方法。
提前致谢, BBQuercus :)
【问题讨论】:
【参考方案1】:IIUC:
df.books.eq(0).astype(int).groupby(df.nationality).sum()
nationality
France 1
UK 0
USA 1
Name: books, dtype: int64
【讨论】:
【参考方案2】:用途:
df.groupby('nationality')['books'].apply(lambda x: x.eq(0).any().astype(int))
nationality
France 1
UK 0
USA 1
Name: books, dtype: int64
【讨论】:
我刚刚检查了我的整个数据集(大约 10'000 个值)// piRSquared – CPU 时间:用户 7.35 毫秒,系统:1.71 毫秒,总计:9.05 毫秒挂壁时间:9.52 毫秒 // anky_91 – CPU 时间:用户 34.2 毫秒,系统:2.72 毫秒,总计:37 毫秒挂壁时间:42.4 毫秒以上是关于Groupby 一列并计算另一列的条件?的主要内容,如果未能解决你的问题,请参考以下文章
Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串
在包含记录的现有表中,如何创建一个新的 datetime2(2) 列并使用基于另一列的值填充它?
如何通过另一列的值 pandas 聚合 groupBy [重复]