Use*_*123 1 python group-by pandas
我是 Pandas 的新手,想创建一个包含分组和过滤数据的新数据集。现在,我的数据集包含两列,如下所示(第一列带有 A、B 或 C,第二列带有值):
A 1
A 2
A 3
A 4
B 1
B 2
B 3
C 4
Run Code Online (Sandbox Code Playgroud)
--> 现在我想按第一列 (A,B,C) 的键进行分组,并仅显示存在值 1 AND 2 的键。这样我的新数据集看起来像:
A 1
A 2
B 1
B 2
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只能打印所有内容,但我不知道如何过滤:
for name, group in data.groupby('keys'):
print(name)
print(group)
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助!
您可以使用:
df = df.loc[(df['col2'] == 1) | (df['col2'] == 2)]
Run Code Online (Sandbox Code Playgroud)
然后过滤不包含这两个值的组:
df = df.groupby('col1').filter(lambda x: any(x['col2'] == 2))
df = df.groupby('col1').filter(lambda x: any(x['col2'] == 1))
Run Code Online (Sandbox Code Playgroud)
例子:
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
Run Code Online (Sandbox Code Playgroud)
输出:
col1 col2
0 A 1
1 A 2
4 B 1
5 B 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8004 次 |
| 最近记录: |