如何用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.transform
和GroupBy.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 和 MAX 函数的 Pig Latin 查询