pythonDataframe合并与去重详情

 

1.合并

1.1 结构合并

将两个结构相同的数据合并

1.1.1 concat函数

函数配置:

concat([dataFrame1, dataFrame2,…], index_ingore=False)

参数说明:index_ingore=False(表示合并的索引不延续),index_ingore=True(表示合并的索引可延续)

实例:

import pandas as pd
import numpy as np

# 创建一个十行两列的二维数据
df = pd.DataFrame(np.random.randint(0, 10, (3, 2)), columns=['A', 'B'])

# 将数据拆分成两份,并保存在列表中
data_list = [df[0:2], df[3:]]

# 索引值不延续 
df1 = pd.concat(data_list, ignore_index=False)

# 索引值延续
df2 = pd.concat(data_list, ignore_index=True)

返回结果:

----------------df--------------------------
A B
0 7 8
1 7 3
2 5 9
3 4 0
4 1 8
----------------df1--------------------------
A B
0 7 8
1 7 3
3 4 0# -------------->这里并没有2出现,索引不连续
4 1 8
----------------df2--------------------------
A B
0 7 8
1 7 3
2 4 0
3 1 8

1.1.2 append函数

函数配置:

df.append(df1, index_ignore=True) 

参数说明:index_ingore=False(表示索引不延续),index_ingore=True(表示索引延续)

实例:

import pandas as pd
import numpy as np

# 创建一个五行两列的二维数组
df = pd.DataFrame(np.random.randint(0, 10, (5, 2)), columns=['A', 'B'])

# 创建要追加的数据
narry = np.random.randint(0, 10, (3, 2))
data_list = pd.DataFrame(narry, columns=['A', 'B'])

# 合并数据
df1 = df.append(data_list, ignore_index=True)

返回结果:

----------------df--------------------------
A B
0 5 6
1 1 2
2 5 3
3 1 8
4 1 2
----------------df1--------------------------
A B
0 5 6
1 1 2
2 5 3
3 1 8
4 1 2
5 8 1
6 3 5
7 1 1

1.2 字段合并

将同一个数据不同列合并

参数配置:

pd.merge( left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=("_x", "_y"), copy=True, indicator=False, validate=None, )

参数说明:

参数说明
how连接方式:inner、left、right、outer,默认为 inner
on用于连接的列名
left_on左表用于连接的列名
right_on右表用于连接的列名
Left_index是否使用左表的行索引作为连接键,默认为False
Right_index是否使用右表的行索引作为连接键,默认为False
sort默认为False,将合并的数据进行排序
copy默认为True。总是将数据复制到数据结构中,设置为False可以提高性能
suffixes存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y’)
indicator显示合并数据中数据来自哪个表

实例1:

import pandas as pd

df1 = pd.DataFrame({'key':['a','b','c'], 'data1':range(3)})
df2 = pd.DataFrame({'key':['a','b','c'], 'data2':range(3)})
df = pd.merge(df1, df2) # 合并时默认以重复列并作为合并依据

结果展示:

----------------df1--------------------------
key data1
0 a 0
1 b 1
2 c 2
----------------df2--------------------------
key data2
0 a 0
1 b 1
2 c 2
----------------df---------------------------
key data1 data2
0 a 0 0
1 b 1 1
2 c 2 2

实例2:

# 多键连接时将连接键组成列表传入

right=DataFrame({'key1':['foo','foo','bar','bar'],  
       'key2':['one','one','one','two'],  
       'lval':[4,5,6,7]})  

left=DataFrame({'key1':['foo','foo','bar'],  
       'key2':['one','two','one'],  
       'lval':[1,2,3]})  

pd.merge(left,right,on=['key1','key2'],how='outer')

结果展示:

----------------right-------------------------
key1 key2 lval
0 foo one 4
1 foo one 5
2 bar one 6
3 bar two 7
----------------left--------------------------
key1 key2 lval
0 foo one 1
1 foo two 2
2 bar one 3
----------------df---------------------------
key1 key2 lval_x lval_y
0 foo one 1.0 4.0
1 foo one 1.0 5.0
2 foo two 2.0 NaN
3 bar one 3.0 6.0
4 bar two NaN 7.0

 

2.去重

参数配置:

data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

参数说明:

参数说明
subset列名,可选,默认为None
keep{‘first’, ‘last’, False}, 默认值 ‘first’
first保留第一次出现的重复行,删除后面的重复行
last删除重复项,除了最后一次出现
False删除所有重复项
inplace布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

实例:

去除完全重复的行数据

data.drop_duplicates(inplace=True)

df = pd.DataFrame({
  'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
  'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
  'rating': [4, 4, 3.5, 15, 5]
})

df.drop_duplicates()

结果展示:

---------------去重前的df---------------------------
brand style rating
0 Yum Yum cup 4.0
1 Yum Yum cup 4.0
2 Indomie cup 3.5
3 Indomie pack 15.0
4 Indomie pack 5.0
---------------去重后的df---------------------------
brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5
3 Indomie pack 15.0
4 Indomie pack 5.0

使用subset 去除某几列重复的行数据

data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)

df.drop_duplicates(subset=['brand'])

结果展示:

brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5

使用 keep删除重复项并保留最后一次出现

df.drop_duplicates(subset=['brand', 'style'], keep='last') 

结果展示:

brand style rating
1 Yum Yum cup 4.0
2 Indomie cup 3.5
4 Indomie pack 5.0

关于python Dataframe 合并与去重详情的文章就介绍至此,更多相关python Dataframe内容请搜索编程宝库以前的文章,希望以后支持编程宝库

 1. 列表1.1 列表的定义List(列表) 是Python 中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串 信息列表用[] 定义,数据之间使用, 分隔列表的索引从0 ...