实现任务:pandas 查询DataFrame 某列元素中重复的数据项

举报
墨理学AI 发表于 2022/01/10 22:53:12 2022/01/10
【摘要】 duplicated官方说明参考 duplicated方法说明: 简洁代码实现: import pandas as pd from pandas import DataFrame """ 实...

duplicated官方说明参考

  • duplicated方法说明:

1

  • 简洁代码实现:

import pandas as pd
from pandas import DataFrame

"""
实现任务:查询DataFrame 某列元素中重复的数据项
"""

if __name__ == '__main__':

    df = DataFrame({'key1': ['a', 'a', 'b', 'b', 'a', 'a', 'c', 'a'],
                    'key2': ['one', 'two', 'one', 'two', 'one2', 'one1', 'one', 'two',],
                    'data1': [1, 2, 3, 2, 5, 1, 3, 1],
                    'data2': [1, 2, 5, 5, 5, 1, 3, 1],
                    })
    print(df)
    # pandas  很简洁暴力的两行代码
    key_duplicated = df[df.key2.duplicated(False)]
    print("'key2' 列 中 重复元素所在数据如下:")
    print(key_duplicated[['key1', 'key2', 'data1']])

    # 可以考虑 按 'key2' 列元素进行排序
    sort_key_duplicated = key_duplicated.sort_values(by=['key2'])
    print(sort_key_duplicated)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 我自己写的呆萌方法(不需要看了):

import pandas as pd
from pandas import DataFrame

"""
实现任务:查询DataFrame 某列元素中重复的数据项
"""

if __name__ == '__main__':

    df = DataFrame({'key1': ['a', 'a', 'b', 'b', 'a', 'a', 'c', 'a'],
                    'key2': ['one', 'two', 'one', 'two', 'one2', 'one1', 'one', 'two',],
                    'data1': [1, 2, 3, 2, 5, 1, 3, 1],
                    'data2': [1, 2, 5, 5, 5, 1, 3, 1],
                    })
    # print(df)
    # 取出 key2 列的数据
    key = df.key2
    # print(key)
    print("key.duplicated(False)的返回为:")
    print(key.duplicated(False))

    print("==============")
    # 重复元素出现的索引位置
    indexs = []
    # 重复元素放到valueSet
    valueSet = set()
    dup = key.duplicated(False)
    for index, value in enumerate(dup):
        if value:
            indexs.append(index)
            valueSet.add(key[index])
    print("重复的值有:")
    print(valueSet)
    print("重复的值的索引为:")
    print(indexs)
    # 重复的元素个数
    num = 0
    # 重复的值按分组输出:
    for repeatVal in valueSet:
        flag = 0
        for index, value in enumerate(key):
            if repeatVal == value:
                if flag == 0:
                    print("-----find -----")
                    num += 1
                    flag = 1
                print(index, value)

    if num == 0:
        print("当前没有重复元素")
    else:
        print("本次查询重复的元素数量为 :%d" % num)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/103704564

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。