python兩表連線資料處理的小技巧 merge

2021-08-09 16:33:53 字數 2447 閱讀 3390

​ 今天在工作的時候, 碰到兩個表需要做連線, 很簡單的問題,pd.merge就可以解決問題. 但是在檢查資料的時候卻發現很多沒有merge上, 明明要連線的字段在兩個表中都有記錄, 為什麼merge出來的結果有缺失呢?仔細檢查資料才發現, 有些資料字段是以0開頭的, 例如0021等. python在讀取這些資料的時候會忽略掉最前面的多個0, 所以會出現上述情況?

​ 這個問題該怎麼處理? 其實很簡單,code最容易直觀說明與解決問題了.

data1 = pd.dataframe()

data1

out[1]:

idname

0001

1002

2031

3421

data1.dtypes
out[2]:

id      object

name object

dtype: object

data2 = pd.dataframe()

data2

out[3]:

idlabel

0001

1002

2031

merge_data1 = pd.merge(data1, data2, on='id',how='left')

merge_data1

out[4]:

idname

label

0001

alice

1002

bruce

2031

cook

3421

daisy

這個輸出沒有什麼問題, 和預想的結果保持一致;

接著, 我們建立兩個臨時資料data1data2, 然後我們另存, 改為從本地讀取檔案, 看看是什麼效果.

temp1 = pd.read_csv('./data/test1019/data1.txt')

temp1

out[5]:

idname01

12231

3421

temp2 = pd.read_csv('./data/test1019/data2.txt',dtype=)

temp2

out[6]:

idlabel

0001

1002

2031

merge_data2 = pd.merge(temp1, temp2, on='id',how='left')

merge_data2

out[7]:

idname

label01

alice12

bruce231

cook

3421

daisy

​ 比較理想的結果是: python將兩個檔案中所有以0打頭的字段都忽略掉, 這樣標準一樣, merge的結果還是一致的.

​ 不理想的結果, 就如merge_data2的結果,pythontemp1id欄位中的0忽略掉, 但是temp2id欄位中的0還是正常顯示, 這樣就會造成結果輸出與預想的不一致, 導致後續所有的結果都是錯的.

​ 那麼問題來了, 像這種小量的資料, 我們能直接觀察到資料讀寫的問題, 如今大資料時代, 我們該如何規避此類問題呢? 在上面的**中, 已經給出了一種解決方案.

#方案1: 使用lambda函式

te*** = pd.read_csv('./data/test1019/data1.txt',converters=)

te***

out[8]:

idname

0001

1002

2031

3421

#方案2: 使用dtype對特定列進行制定資料型別

temp4 = pd.read_csv('./data/test1019/data2.txt',dtype=)

temp4

out[9]:

idlabel

0001

1002

2031

merge_data3 = pd.merge(te***, temp4, on='id',how='left')

merge_data3

因此, 為了保證資料原有的格式, 對一些會被各種程式語言特殊處理掉的資料, 一定要先宣告資料型別.

Python 資料處理

將檔案切分,存入列表 strip split with open james.txt as jaf data jaf.readline james data.strip split 資料檔案為 2 34,3 21,2.34,2.45,3.01,2 01,2 01,3 10,2 22 print ja...

Python 資料處理

本場 chat 為 python 資料處理課程,包括 python 基礎知識 極簡教程 提公升 python 執行效率的方法 爬蟲簡介 scrapy selenium 自動化測試框架 簡易分布式 redis 分詞程式設計 jieba 資料儲存 本地資料上傳 hive 通過本場 chat 讀者可學到以...

Python資料處理

用傳統的電子 來處理資料不僅效率低下,而且無法處理某些格式的資料,對於混亂或龐大的資料集更是束手無策。本書將教你如何利用語法簡單 容易上手的python輕鬆處理資料。作者通過循序漸進的練習,詳細介紹如何有效地獲取 清洗 分析與呈現資料,如何將資料處理過程自動化,如何安排檔案編輯與清洗任務,如何處理更...