您好,登錄后才能下訂單哦!
這篇文章主要講解了“python Dataframe合并與去重的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python Dataframe合并與去重的方法”吧!
將兩個結構相同的數據合并
函數配置:
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合并與去重的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。