脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python Dataframe 合并与去重详情

python Dataframe 合并与去重详情

2022-08-10 09:19Coderusher​​​​​​​ Python

这篇文章主要介绍了python Dataframe 合并与去重详情,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的朋友可以参考一下

1.合并

1.1 结构合并

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

1.1.1 concat函数

函数配置:

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

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

实例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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函数

函数配置:

?
1
df.append(df1, index_ignore=True)

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

实例:

?
1
2
3
4
5
6
7
8
9
10
11
12
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 字段合并

将同一个数据不同列合并

参数配置:

?
1
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:

?
1
2
3
4
5
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:

?
1
2
3
4
5
6
7
8
9
10
11
# 多键连接时将连接键组成列表传入
 
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.去重

参数配置:

?
1
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)

?
1
2
3
4
5
6
7
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)

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

结果展示:

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

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

?
1
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内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/coderusher/5554275

延伸 · 阅读

精彩推荐
  • PythonSelenium控制浏览器常见操作示例

    Selenium控制浏览器常见操作示例

    这篇文章主要介绍了Selenium控制浏览器常见操作,结合实例形式分析了Selenium针对浏览器的窗口大小控制、前进、后退、刷新、截屏等相关操作技巧,需要的朋...

    喷跑的豆子5682021-03-27
  • PythonPython计算三角函数之asin()方法的使用

    Python计算三角函数之asin()方法的使用

    这篇文章主要介绍了Python计算三角函数之asin()方法的使用,是Python入门的基础知识,需要的朋友可以参考下...

    Python教程网4792020-06-29
  • PythonTensorFlow深度学习另一种程序风格实现卷积神经网络

    TensorFlow深度学习另一种程序风格实现卷积神经网络

    这篇文章主要介绍了TensorFlow卷积神经网络的另一种程序风格实现方式示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...

    零尾9762022-02-24
  • PythonPython实现爬虫爬取NBA数据功能示例

    Python实现爬虫爬取NBA数据功能示例

    这篇文章主要介绍了Python实现爬虫爬取NBA数据功能,涉及Python针对URL模块、字符串、列表遍历、Excel写入等相关操作技巧,需要的朋友可以参考下...

    缥缈之力8302021-02-26
  • Pythonpython检测主机的连通性并记录到文件的实例

    python检测主机的连通性并记录到文件的实例

    今天小编就为大家分享一篇python检测主机的连通性并记录到文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    秋雪夜雨寒10842021-03-07
  • Python手把手教你使用Python解决简单的zip文件解压密码

    手把手教你使用Python解决简单的zip文件解压密码

    本文主要介绍了Python解决简单的zip文件解压密码,使用的核心模块是python标准库中的zipfile模块。具有一定的参考价值,感兴趣的可以了解一下...

    python可乐编程5262022-03-06
  • Pythonpython爬取某网站原图作为壁纸

    python爬取某网站原图作为壁纸

    之前已经爬取过网站上的图片,貌似很简单可是他喵的都像马赛克一样,怎么能用做壁纸呢通过多重审查发现,原图地址藏在更深的地方 所以,来爬一下原图吧...

    dododododoooo4362021-11-21
  • PythonPython实现视频下载功能

    Python实现视频下载功能

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有一个程序可以把各大视频网站的热门用户最新发布的视频下载下来,不...

    腩啵兔子5222020-09-23