目录
1.合并1.1 结构合并1.1.1 concat函数1.1.2 append函数1.2 字段合并2.去重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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 2如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 3AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 4转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 5充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 6好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 7名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 8亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 9京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 10网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久