鉴于以下熊猫数据框:
| a b
--+-----
0 | 1 A
1 | 2 A
2 | 3 A
3 | 4 A
4 | 1 B
5 | 2 B
6 | 3 B
7 | 1 C
8 | 3 C
9 | 4 C
Run Code Online (Sandbox Code Playgroud)
如果你按列分组,b我想执行一个操作,只保留它们有a共同列的行。结果将是以下数据框:
| a b
--+-----
0 | 1 A
2 | 3 A
4 | 1 B
6 | 3 B
7 | 1 C
8 | 3 C
Run Code Online (Sandbox Code Playgroud)
是否有一些内置方法可以做到这一点?
您可以pivot_table在dropna此处尝试,然后使用sreries.isin以下方法进行过滤:
s = df.pivot_table(index='a',columns='b',aggfunc=len).dropna().index
df[df['a'].isin(s)]
Run Code Online (Sandbox Code Playgroud)
类似的crosstab:
s = pd.crosstab(df['a'],df['b'])
df[df['a'].isin(s[s.all(axis=1)].index)]
Run Code Online (Sandbox Code Playgroud)
a b
0 1 A
2 3 A
4 1 B
6 3 B
7 1 C
8 3 C
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |