如何用group by提取包含数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用group by提取包含数据相关的知识,希望对你有一定的参考价值。

|id|name|state|
|1|A|yes|
|2|B|yes|
|3|B|no|
|4|C|yes|
|5|C|yes|
|6|D|no|

当我使用df.groupby(['name'])定义上面的Dataframe时。我想在州提取'是'的名称项目。

在这种情况下,A,B,C是要提取的目标数据。

我该如何提取数据?

答案

您可以使用boolean indexing通过Series.unique提取值,并通过Series.isin再次过滤:

a = df.loc[df['state'] == 'yes', 'name'].unique()
print (a)
['A' 'B' 'C']

df1 = df[df['name'].isin(a)]
print (df1)
   id name state
0   1    A   yes
1   2    B   yes
2   3    B    no
3   4    C   yes
4   5    C   yes

另一个解决方案是使用GroupBy.transformGroupBy.any测试每组至少一个True

df1 = df[(df['state'] == 'yes').groupby(df['name']).transform('any')]
print (df1)
   id name state
0   1    A   yes
1   2    B   yes
2   3    B    no
3   4    C   yes
4   5    C   yes

以上是关于如何用group by提取包含数据的主要内容,如果未能解决你的问题,请参考以下文章

如何用 seaborn 绘制 pandas 三列(用 group by 计算)

如何用sql server中的group by和where显示数据?

如何用group by查询group by?

使用 group by 和 MAX 函数的 Pig Latin 查询

ElasticsearchElasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能

如何用python从excel中同时提取两个列的数据,并生成dict(用xlrd)