python Dataframe 合并与去重(python基础教程)

网友投稿 1185 2022-08-23


python Dataframe 合并与去重(python基础教程)

@[toc]

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)

* 返回结果 ```python ----------------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)

* 返回结果 ```python ----------------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) # 合并时默认以重复列并作为合并依据

* 结果展示 ```python ----------------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')

* 结果展示 ```python ----------------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()

结果展示 ```python ---------------去重前的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 参考链接 Pandas: 数据合并 drop_duplicates去重详解 Pandas之drop_duplicates:去除重复项


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:都2022年了,Python Web框架你不会只知道Django和Flask吧?(都2022年了,还有人不知道蚝油要放冰箱?)
下一篇:Python开始(python开始颜色填充)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~