我是 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/