【问题标题】:How to select rows in Pandas dataframe where value appears more than once如何在 Pandas 数据框中选择值出现多次的行
【发布时间】:2022-02-11 18:01:49
【问题描述】:

假设我有一个 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

【问题讨论】:

标签: python pandas


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用transform + sizeboolean indexing

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

    【讨论】:

      【解决方案3】:

      通过使用filter

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

      【讨论】:

      • 不幸的是真的很慢,但 plus1
      【解决方案4】:

      Loc 和 count 也可以工作

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

      【讨论】:

        【解决方案5】:

        您可以使用 value_counts() 获取 DataFrame 中的行及其原始索引,其中特定列中的值通过 Series 操作多次出现

        freq = DF['attribute'].value_counts()
        items = freq[freq>1].index # items that appear more than once
        more_than_1_df = DF[DF['attribute'].isin(items)
        more_than_1_df
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多