Python 3.x 如何保留一组平均值较小的重复项?

用户8884453

嗨,因为我是 Python 新手,一位朋友推荐我在 stackoverflow 上寻求帮助,所以我决定试一试。我目前使用的是 python 3.x 版。

我在没有列标题的 csv 文件中设置了超过 100k 的数据,我已将数据加载到 pandas 中DataFrame由于文件是机密的,我无法在此处显示数据,但这是可以定义如下的数据和列的示例

("id", "name", "number", "time", "text_id", "text", "text")

1 | apple | 12 | 123 | 2 | abc | abc

1 | apple | 12 | 222 | 2 | abc | abc

2 | orange | 32 | 123 | 2 | abc | abc

2 | orange | 11 | 123 | 2 | abc | abc

3 | apple | 12 | 333 | 2 | abc | abc

3 | apple | 12 | 443 | 2 | abc | abc

3 | apple | 12 | 553 | 2 | abc | abc

正如您从该name列中看到的,我有 2 个重复的“apple”集群,但具有不同的 ID。

所以我的问题是:如何删除基于“时间”具有更高平均值的整个集群(行)?

示例:if (cluster with ID: 1).mean(time) < (cluster with ID: 3).mean(time) 然后删除集群中 ID 为 3 的所有行

期望的输出:

1 | 苹果| 12 | 123 | 2 | ABC | 美国广播公司

1 | 苹果| 12 | 第222话 2 | ABC | 美国广播公司

2 | 橙色| 32 | 123 | 2 | ABC | 美国广播公司

2 | 橙色| 11 | 123 | 2 | ABC | 美国广播公司

我需要很多帮助和任何我能得到的帮助,我的时间不多了,提前致谢!

约瑟夫 K。

你需要的是这些东西:

请尝试以下操作:

import pandas as pd

df = pd.read_csv('filename.csv', header=None)
df.columns = ['id', 'name', 'number', 'time', 'text_id', 'text', 'text']

print(df)

for eachname in df.name.unique():
    eachname_df = df.loc[df['name'] == eachname]
    grouped_df = eachname_df.groupby(['id', 'name'])
    avg_name = grouped_df['time'].mean()

    for a, b in grouped_df:
        if b['time'].mean() != avg_name.min():
            indextodrop = b.index.get_values()
            for eachindex in indextodrop:
                df = df.drop([eachindex])

print(df)


Result:
   id    name  number  time  text_id text text
0   1   apple      12   123        2  abc  abc
1   1   apple      12   222        2  abc  abc
2   2  orange      32   123        2  abc  abc
3   2  orange      11   123        2  abc  abc
4   3   apple      12   333        2  abc  abc
5   3   apple      12   443        2  abc  abc
6   3   apple      12   553        2  abc  abc

   id    name  number  time  text_id text text
0   1   apple      12   123        2  abc  abc
1   1   apple      12   222        2  abc  abc
2   2  orange      32   123        2  abc  abc
3   2  orange      11   123        2  abc  abc

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一组3D图像中按组取平均值

来自分类Dev

MySQL获取一组中每x分钟的列的平均值和总和

来自分类Dev

python 3-x for x for循环-它们如何工作?

来自分类Dev

如何在python中打印3x3数组?

来自分类Dev

Python-一年中3个月的移动平均值

来自分类Dev

matplotlib / python-如何绘制这样的图?平均值±3 *标准偏差

来自分类Dev

Python 3个数字的平均值计算

来自分类Dev

用C或Python移动3个元素的平均值

来自分类Dev

缩短Python 3.x中的重复代码?

来自分类Dev

如何使用Python 3.x ast模块解析Python 2.x?

来自分类Dev

如何将此 Python2.x 代码转换为 Python3.x?

来自分类Dev

如何安装适用于Python 3.x的Django?

来自分类Dev

如何为Python 3.x安装psycopg2?

来自分类Dev

这个程序如何运作[python 3.x]?

来自分类Dev

如何在OS X上安装python 3

来自分类Dev

如何在python 3.x中禁用ssl检查?

来自分类Dev

如何使字典能够被python 3.x中的函数索引

来自分类Dev

如何使用函数Python 3.x划分代码

来自分类Dev

如何安装适用于Python 3.x的Django?

来自分类Dev

如何为Python 3.x安装psycopg2?

来自分类Dev

这个程序如何运作[python 3.x]?

来自分类Dev

如何在Debian上安装Python 3.x?

来自分类Dev

Python 3.x-如何从文件中获取变量的内容

来自分类Dev

如何反向排序列表?(Python 3.x)

来自分类Dev

替换功能如何在python 3.x中工作

来自分类Dev

如何配置 atom 使用 python 3.x ide?

来自分类Dev

如何让 Tkinter Python3.x 嵌套网格?

来自分类Dev

Python 3.x-输入仅返回第一项

来自分类Dev

如何在Ubuntu上安装最新的Python 2.7.X或3.X?