使用基于组的条件删除一些Pandas数据框行

ry

我有一些销售数据,例如,想看看邮编的不同之处:有些公司提供的利润比其他公司更多?因此,我按邮政编码分组,并且可以轻松地按每个邮政编码获取各种统计信息。但是,有一些非常高价值的工作会扭曲统计数据,因此我想做的就是忽略异常值。由于各种原因,我想按组定义离群值:例如,删除数据框中位于其组的第x个百分位数或该组中的前n个行的行。

因此,如果我有以下数据框:

>>> df
Out[67]: 
     A         C         D
0  foo -0.536732  0.061055
1  bar  1.470956  1.350996
2  foo  1.981810  0.676978
3  bar -0.072829  0.417285
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
6  foo  0.959957 -1.068385
7  foo -0.640706  2.635910

我希望能够有一些功能,例如返回drop_top_n(df, group_column, value_column, number_to_drop)哪里drop_top_n(df, "A", "C", 2)

     A         C         D
0  foo -0.536732  0.061055
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
7  foo -0.640706  2.635910

使用filter掉落整个组,而不是部分组。

我想我可以遍历各个组,然后为每个组找出要删除的行,然后返回到原始数据帧并删除它们,但这看起来非常笨拙。有没有更好的办法?

Y

您可以使用apply()方法:

import pandas as pd
import io


txt="""     A         C         D
0  foo -0.536732  0.061055
1  bar  1.470956  1.350996
2  foo  1.981810  0.676978
3  bar -0.072829  0.417285
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
6  foo  0.959957 -1.068385
7  foo -0.640706  2.635910"""

df = pd.read_csv(io.BytesIO(txt), delim_whitespace=True, index_col=0)

def f(df):
    return df.sort("C").iloc[:-2]
df2 = df.groupby("A", group_keys=False).apply(f)
print df2

输出:

     A         C         D
5  bar -0.346749 -0.127740
4  foo -0.910537 -1.634047
7  foo -0.640706  2.635910
0  foo -0.536732  0.061055

如果要原始订单:

print df2.reindex(df.index[df.index.isin(df2.index)])

输出:

    A         C         D
0  foo -0.536732  0.061055
4  foo -0.910537 -1.634047
5  bar -0.346749 -0.127740
7  foo -0.640706  2.635910

获得高于组均值的行:

def f(df):
    return df[df.C>df.C.mean()]
df3 = df.groupby("A", group_keys=False).apply(f)
print df3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用基于组的条件删除一些Pandas数据框行

来自分类Dev

使用一些条件基于列中的值(在R中)创建一个新的数据框

来自分类Dev

合并两个数据框会删除一些行

来自分类Dev

如何基于组条件从数据框中删除行,而不会丢失某些列

来自分类Dev

根据条件删除pandas数据框中的一行

来自分类Dev

根据一些复杂的条件删除一些行

来自分类Dev

在Pandas数据框中的多个条件(基于2列)上删除行

来自分类Dev

在 Pandas 数据框中插入新行,在保留其他数据的同时更改一些时间戳

来自分类Dev

尝试使用python删除列中的一些数据

来自分类Dev

匹配一些行并使用Perl删除它们

来自分类Dev

基于多个删除行的条件对数据框进行分组

来自分类Dev

根据条件替换一些行

来自分类Dev

分割并删除一些数据到另一个文本框

来自分类Dev

删除一些行以使每个组的总数低于阈值

来自分类Dev

删除一些行以使每个组的总数低于阈值

来自分类Dev

Pandas数据框基于索引和列值删除行

来自分类Dev

如何使用汇总从mysql查询中删除新行上不需要的一些数据

来自分类Dev

我的某些数据框值包含字典,而另一些包含值。如何删除字典?

来自分类Dev

如何删除以最后一行值为条件的pandas数据框列?

来自分类Dev

基于组计数的 Pandas 数据框过滤

来自分类Dev

使用查找删除一些文件

来自分类Dev

使用查找删除一些文件

来自分类Dev

删除pandas数据框中的行:每次满足一定条件时删除前k行

来自分类Dev

通过在pandas数据框中也复制其他一些列来堆积价值?

来自分类Dev

Python / Pandas:重塑和合并数据框,并具有一些元素匹配

来自分类Dev

合并数据框并保留一些列,同时重复某些列 pandas

来自分类Dev

使用 Bootstrap 4 列表组面板显示一些动态数据时出现问题

来自分类Dev

将一些数据框行转换为熊猫列

来自分类Dev

Laravel雄辩的查询使用一组条件还是一组其他条件以及一些常见条件?

Related 相关文章

  1. 1

    使用基于组的条件删除一些Pandas数据框行

  2. 2

    使用一些条件基于列中的值(在R中)创建一个新的数据框

  3. 3

    合并两个数据框会删除一些行

  4. 4

    如何基于组条件从数据框中删除行,而不会丢失某些列

  5. 5

    根据条件删除pandas数据框中的一行

  6. 6

    根据一些复杂的条件删除一些行

  7. 7

    在Pandas数据框中的多个条件(基于2列)上删除行

  8. 8

    在 Pandas 数据框中插入新行,在保留其他数据的同时更改一些时间戳

  9. 9

    尝试使用python删除列中的一些数据

  10. 10

    匹配一些行并使用Perl删除它们

  11. 11

    基于多个删除行的条件对数据框进行分组

  12. 12

    根据条件替换一些行

  13. 13

    分割并删除一些数据到另一个文本框

  14. 14

    删除一些行以使每个组的总数低于阈值

  15. 15

    删除一些行以使每个组的总数低于阈值

  16. 16

    Pandas数据框基于索引和列值删除行

  17. 17

    如何使用汇总从mysql查询中删除新行上不需要的一些数据

  18. 18

    我的某些数据框值包含字典,而另一些包含值。如何删除字典?

  19. 19

    如何删除以最后一行值为条件的pandas数据框列?

  20. 20

    基于组计数的 Pandas 数据框过滤

  21. 21

    使用查找删除一些文件

  22. 22

    使用查找删除一些文件

  23. 23

    删除pandas数据框中的行:每次满足一定条件时删除前k行

  24. 24

    通过在pandas数据框中也复制其他一些列来堆积价值?

  25. 25

    Python / Pandas:重塑和合并数据框,并具有一些元素匹配

  26. 26

    合并数据框并保留一些列,同时重复某些列 pandas

  27. 27

    使用 Bootstrap 4 列表组面板显示一些动态数据时出现问题

  28. 28

    将一些数据框行转换为熊猫列

  29. 29

    Laravel雄辩的查询使用一组条件还是一组其他条件以及一些常见条件?

热门标签

归档