【问题标题】:extract data with special value提取具有特殊值的数据
【发布时间】:2021-04-04 16:46:13
【问题描述】:

我有一个像这样的数据集:

df = pd.DataFrame({'scientist':["Wendelaar Bonga"," Sjoerd E.", "Grätzel"," Michael", "Willett", "Walter C.",
                             "Kessler", "Ronald C.", "Witten, Edward", "Wang, Zhong Lin"],
               'SubjectField': ["Biomedical Engineering", "Inorganic & Nuclear Chemistry",
                                "Organic Chemistry", "Biomedical Engineering", "Developmental Biology",
                                "Mechanical Engineering & Transports", "Biomedical Engineering", "Microbiology",
                                "Cardiovascular System & Hematology", "Biomedical Engineering"]})

我想统计每个学科领域的科学家人数,并提取有超过 2 名科学家的学科领域。这是我计算科学家数量的代码

 number_of_scientists_in_fields=data.groupby(['SubjectField'])['scientist'].count()

如何提取拥有超过 2 位科学家的学科领域?

【问题讨论】:

    标签: python pandas dataframe anaconda data-analysis


    【解决方案1】:

    你只需要创建一个Series,然后用> 2过滤它:

    使用Groupby.count:

    In [2554]: x = df.groupby('SubjectField')['scientist'].count()
    In [2559]: ans = x[x > 2]
    
    In [2560]: ans
    Out[2560]: 
    SubjectField
    Biomedical Engineering    4
    Name: scientist, dtype: int64
    

    【讨论】:

    • 如何从我的数据中删除少于 2 名科学家的主题字段?
    • 为什么要显式删除行?只需选择 count > 2 的行,就像我的回答一样。
    • 我需要对数据进行一些其他操作,所以我需要删除一些部分。虽然这不是真正的数据集
    • 我明白了。我想说的是,删除行或选择计数大于 2 的行是一样的。
    • 你不懂我。我需要使用剩下的数据!
    【解决方案2】:

    替代方法,可能不如 Dani 的方法:

    > df2 = df[df.SubjectField.duplicated(keep=False)]
    > df2.groupby('SubjectField').count()
                            scientist
    SubjectField
    Biomedical Engineering          4
    

    然而,这个例子将包括 2 个或更多(不 > 2)

    【讨论】:

      【解决方案3】:

      使用value_counts,如下:

      fields = df.value_counts('SubjectField').to_frame('count')
      res = fields[fields['count'] > 2]
      print(res)
      

      输出

                              count
      SubjectField                 
      Biomedical Engineering      4
      

      【讨论】:

        猜你喜欢
        • 2011-05-02
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2016-12-12
        • 1970-01-01
        • 2017-02-24
        • 2021-12-05
        • 1970-01-01
        相关资源
        最近更新 更多