pandas - 按大小对组进行排序并删除较小的组

问题描述 投票:0回答:1

我想对一些数据进行分组,并且:

  1. 按大小对组进行排序
  2. 减少数量少于3组。

在下面的示例中,我想获得顺序为

z
y
的组,因为
z
的大小为 4,
y
的大小为 3。但是删除
x
,因为它的大小为 2。

import pandas as pd

data = [
    ['x', 1],
    ['y', 5],
    ['z', 1],
    ['x',43],
    ['y', 22],
    ['z', 2],
    ['y', 31],
    ['z', 3],
    ['z', 4],
    
]
df = pd.DataFrame(data, columns=['name', 'value'])
print(df)
dfg = df.groupby('name')
for name,df in dfg:
    print(name)
    print(df)

电流输出:

  name  value
0    x      1
1    y      5
2    z      1
3    x     43
4    y     22
5    z      2
6    y     31
7    z      3
8    z      4
x
  name  value
0    x      1
3    x     43
y
  name  value
1    y      5
4    y     22
6    y     31
z
  name  value
2    z      1
5    z      2
7    z      3
8    z      4

预计:

  name  value
2    z      1
5    z      2
7    z      3
8    z      4
  name  value
1    y      5
4    y     22
6    y     31
z
pandas
1个回答
0
投票

一个可能的解决方案:

g = df.groupby('name')
[x for _, x in g if len(x) >= 3]
© www.soinside.com 2019 - 2024. All rights reserved.