<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
將兩個結構相同的資料合併
函數設定:
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
函數設定:
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
將同一個資料不同列合併
引數設定:
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
引數設定:
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內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45