python - Pandas:按 A 列对数据进行分组,按 B 列的现有值过滤 A

标签 python pandas group-by

我是 pandas 新手,想要创建一个包含分组和筛选数据的新数据集。 现在,我的数据集包含两列,如下所示(第一列包含 A、B 或 C,第二列包含值):

A 1 

A 2

A 3

A 4 

B 1

B 2

B 3 

C 4

--> 现在我想按第一列 (A,B,C) 的键进行分组,并仅显示存在值 1 和 2 的键。 这样我的新数据集如下所示:

A 1

A 2

B 1

B 2

到目前为止,我只能打印所有内容,但不知道如何过滤:

for name, group in data.groupby('keys'):
   print(name)
   print(group)

非常感谢您的帮助!

最佳答案

您可以使用:

df = df.loc[(df['col2'] == 1) | (df['col2'] == 2)]

然后过滤不包含这两个值的组:

df = df.groupby('col1').filter(lambda x: any(x['col2'] == 2))
df = df.groupby('col1').filter(lambda x: any(x['col2'] == 1))

示例:

  col1  col2
0    A     1
1    A     2
2    A     3
3    A     4
4    B     1
5    B     2
6    B     3
7    C     4
8    C     1

输出:

  col1  col2
0    A     1
1    A     2
4    B     1
5    B     2

关于python - Pandas:按 A 列对数据进行分组,按 B 列的现有值过滤 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377779/

相关文章:

python - 更改 Python 的默认编码?

python - 数据库错误 : ('HY000' , '[HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (0) (SQLExecDirectW)' )

python - MinMaxScaler 如何工作 - 按行缩放还是针对整个数据集缩放?

python - Pandas 如何创建一个具有开始和结束的新数据框,即使在不同的行上也是如此

mysql - 具有多个参数的 GROUP BY 和 COUNT

python - 如何获取数据框中的累计行数?

javascript - Flask Javascript Json 数据 - 未定义

python 子类 __set__ 不工作

javascript - 在 Python 中更改来自 Selenium 的元素列表

sql - 一个极端的多维 Oracle Group By Select