如何选择值出现不止一次的 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

原文由 Char 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 432
2 个回答

您可以使用 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

原文由 cs95 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题