【问题标题】:Python pandas: delete the data in a data frame that the size of data is below a valuePython pandas:删除数据大小低于某个值的数据框中的数据
【发布时间】:2017-01-04 23:23:13
【问题描述】:

我有一个叫df的数据框(这只是一个例子,真实数据很大,请考虑计算速度)如下:

   name   id     text
    tom    1      a1 
    lucy   2      b1
    john   3      c1
    tick   4      d1
    tom    1      a2 
    lucy   2      b2
    john   3      c2
    tick   4      d2
    tom    1      a3 
    lucy   2      b3
    john   3      c3
    tick   4      d3
    tom    1      a4 
    tick   4      d4
    tom    1      a5 
    lucy   2      b5
    tick   4      d5

数据框可以按名称(tom、john、lucy、tick)分组。我想删除每个组的大小(按名称)小于 5 的数据。我的意思是由于 lucy 和 john 的名称大小小于 5,我想删除这些数据并获取新的 df(只需勾选和 tom 数据),例如。

你能告诉我怎么做吗,拜托!谢谢!

【问题讨论】:

  • 感谢您的 cmets,我已经更新了我的问题。它小于 5

标签: pandas dataframe python-3.5


【解决方案1】:

我认为您可以为此使用过滤器。它只会是一行:

df = pd.DataFrame({'name': ['tom','lucy','john','tick','tom','lucy','john','tick', 'tom', 'lucy','john','tick','tom','tick','tom', 'lucy','tick'], 'id':[1,2,3,4,1,2,3,4,1,2,3,4,1,4,1,2,4],'text':['a1','b1','c1','d1','a2','b2','c2','d2','a3','b3','c3','d3','a4','d4','a5','b5','d5']})

df.groupby('name').filter(lambda x: len(x) >= 5)

输出只有 Tick 和 Tom:

   id  name text
0    1   tom   a1
3    4  tick   d1
4    1   tom   a2
7    4  tick   d2
8    1   tom   a3
11   4  tick   d3
12   1   tom   a4
13   4  tick   d4
14   1   tom   a5
16   4  tick   d5

【讨论】:

    【解决方案2】:

    你可以使用value_counts(),然后,如果你愿意,你可以重置索引reset_index()

    s = df.name.value_counts()
    print(df[df.name.isin(s[s > 4].index)].reset_index(drop=True))
        name  id text
    0   tom   1  a1 
    1  tick   4  d1
    2   tom   1  a2 
    3  tick   4  d2
    4   tom   1  a3 
    5  tick   4  d3
    6   tom   1  a4 
    7  tick   4  d4
    8   tom   1  a5 
    9  tick   4  d5
    

    【讨论】:

    • 感谢您的回答。最好添加如何获取 s,我的意思是 s = df.name.values_counts()。
    • @tktktk0711 哇,我有那行,然后当我编辑它时,我想我忘了再次插入它。谢谢你抓住那个。请查看我的编辑。
    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多