如何在Pandas数据框中选择值多次出现的行

时间:2018-02-05 17:43:30

标签: python pandas

假设我有Pandas数据框,其中包含不同测量属性和相应测量值的列。

ID     Parameter     Value
0      'A'           4.3
1      'B'           3.1
2      'C'           8.9
3      'A'           2.1
4      'A'           3.9
.      .             .
.      .             .
.      .             .
100    'B'           3.8

如何过滤此数据框只能显示超过X次的测量值?例如,对于此数据帧,我希望获得具有超过5个测量值的所有行(仅举几个参数' A' B'出现超过5次)以获得类似的数据帧下面。

ID     Parameter     Value
0      'A'           4.3
1      'B'           3.1
3      'A'           2.1
.      .             .
.      .             .
.      .             .
100    'B'           3.8

4 个答案:

答案 0 :(得分:8)

您可以使用value_counts + isin -

v = df.Parameter.value_counts()
df[df.Parameter.isin(v.index[v.gt(5)])]

例如,K = 2(获取所有超过2个读数的项目) -

df

   ID Parameter  Value
0   0         A    4.3
1   1         B    3.1
2   2         C    8.9
3   3         A    2.1
4   4         A    3.9
5   5         B    4.5

v = df.Parameter.value_counts()
v

A    3
B    2
C    1
Name: Parameter, dtype: int64

df[df.Parameter.isin(v.index[v.gt(2)])]

   ID Parameter  Value
0   0         A    4.3
3   3         A    2.1
4   4         A    3.9

答案 1 :(得分:3)

transform使用size + boolean indexing

df[df.groupby('Parameter')['Parameter'].transform('size') > 5]

答案 2 :(得分:3)

使用filter

df.groupby('Parameter').filter(lambda x : x['Parameter'].shape[0]>=5)

答案 3 :(得分:1)

带计数的Loc也可以使用

df.loc[df.Parameter.isin((df.groupby('Parameter').size().Value >= 5).index)]