# -*- coding: utf-8 -*-
"""
Created on Wed Jul 4 18:40:55 2018

@author: zhen
"""

import pandas as pd
import numpy as np
# 创建空的df,保存测试数据
test_df = pd.DataFrame({'K1':['C1','C1','C2','C3','C4','C2','C1'],'K2':['A','A','B','C','D',np.NaN,np.NaN]})
# 按K1列进行分组,组内进行unique操作(去除重复元素,返回元组或列表)
test_df_unique = pd.DataFrame(test_df.groupby(['K1'])['K2'].agg('unique'))
# 自定义函数判断元组中是否含有nan
def has_nan(list):
  flag = False
  for x in list:
    if x is np.NaN:
      flag = True
      break
  return flag
# 自定义函数判断元组中是否不含有nan
def no_nan(list):
  flag = True
  for x in list:
    if x is np.NaN:
      flag = False
      break
  return flag
# 获取k2列含有nan的数据
test_df_unique_has_nan = test_df_unique[test_df_unique['K2'].apply(has_nan)]
# 获取k2列不含有nan的数据
test_df_unique_no_nan = test_df_unique[test_df_unique['K2'].apply(no_nan)]
# 管理测试数据,获取源数据
test_df_get = test_df[test_df['K1'].isin(test_df_unique_has_nan.index.tolist())]
test_df_alone = test_df[test_df['K1'].isin(test_df_unique_no_nan.index.tolist())]
# 去除含nan的重复数据
test_df_get_nonan = test_df_get[~test_df_get['K2'].isna()]
# 组合数据
result = test_df_get_nonan.append(test_df_alone)
# 去重,得到最终结果
result_save = result.drop_duplicates(subset=['K1','K2'],keep='last')
# 结果落地
result_save.to_excel('C:/Users/zhen/Desktop/数据清洗之去重.xlsx')

测试数据:

结果:

Python数据清洗基本流程的更多相关文章

  1. 数据挖掘:python数据清洗cvs里面带中文字符

    数据清洗,使用python数据清洗cvs里面带中文字符,意图是用字典对应中文字符,即key值是中文字符,value值是index,自增即可:利用字典数据结构没有重复key值的特性,把中文字符映射到了数 ...

  2. Python 入门之流程控制语句

    Python 入门之流程控制语句 1.if判断 (1) 单 if if –-如果 if 条件: 缩进 结果 (官方推荐4个空格,或者一个tab 不能空格和tab混合使用) money = 10 pri ...

  3. Python程序运行流程与垃圾回收机制

    Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc ...

  4. Python基础之:Python中的流程控制

    目录 简介 while语句 if 语句 for语句 Break Continue pass 简介 流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样 ...

  5. python中的流程控制

    目录 引言 流程控制的分类 分支结构 单if结构 if与else结构 if与elif与else结构 if分支的嵌套 循环结构 while循环 while + break循环 while + conti ...

  6. Python程序的流程

    1 """ 2 python程序的流程 3 """ 4 # ------------- 分支结构---------------- 5 # i ...

  7. pip:带你认识一个 Python 开发工作流程中的重要工具

    摘要:许多Python项目使用pip包管理器来管理它们的依赖项.它包含在Python安装程序中,是Python中依赖项管理的重要工具. 本文分享自华为云社区<使用Python的pip管理项目的依 ...

  8. python 数据清洗

    前言 1. 删除重复 2. 异常值监测 3. 替换 4. 数据映射 5. 数值变量类型化 6. 创建哑变量 统计师的Python日记[第7天:数据清洗(1)] 前言 根据我的Python学习计划: N ...

  9. Python学习(七) 流程控制if语句

    在Python中流程控制if语句采用如下格式: if expression : statement elif expression : statement elif expression : stat ...

随机推荐

  1. 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?

    今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...

  2. Liferay7 BPM门户开发之7: Activiti中的重要概念和主要数据库结构

    流程的人员参与角色: Assignee :签收者(即待办人) Candidate:候选人 Owner:拥有者 Starter:启动者 participant:参与者,包含查阅 流程变量的类型: Str ...

  3. scrapy 框架入门

    运行流程 官网:https://docs.scrapy.org/en/latest/intro/overview.html 流程图如下: 组件 1.引擎(EGINE):负责控制系统所有组件之间的数据流 ...

  4. NoSuchFieldError

    最近用Fresco框架加载GIF动态图片,遇到一个bug,记录下来,以供后来者少走弯路: 各种百度,最后参照Fresco官方文档,将原有的 fresco:1.3.0替换成0.12.0即: 在APP b ...

  5. 带你了解CSRF和XSS(一)

    浏览器的同源策略限制了一些跨域行为,但仍有些特例(img.iframe.script标签)不受跨域限制,这就给XSS攻击创造了机会(这完全不是同源策略的锅,一定是程序员的锅). 在讲下面的内容前,还是 ...

  6. python文件处理b模式

    执行环境:windows+Python3.51.rb模式,从文件中读取内容,得到的是bytes类型 因为我们使用的是b模式,所以在open函数中不能指定编码格式,所以打印出来的格式的二进制的格式,而我 ...

  7. [SHOI2006] 有色图

    Description 给一张 \(n\) 个点的无向完全图,同时还有 \(m\) 种颜色.要求给每条边染色,问有多少种不同的染色方案.两种方案不同当且仅当顶点标号任意重排后不同.\(n\leq 53 ...

  8. MySQL之单表查询

    一.关键字的执行优先级 1,from:找到表 2,where:拿着where指定的约束条件,去文件/表中取出一条条数据 3,group by:将取出的一条条数据进行分组,如果没有group by,则整 ...

  9. Apollo 5 教你怎么把自己的配置放到 Spring 环境中

    目录: 前言 处理方案 简单例子 前言 有的时候,你可能需要在 Spring 环境中放入一些配置,但这些配置无法写死在配置文件中,只能运行时放入.那么,这个时候该怎么办呢? Apollo 就是搞配置的 ...

  10. [译]Node.js框架对比:Express/Koa/Hapi

    本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1.介绍 直至今日, ...