使用 Python 標記具有相同名稱的條目
1、問題背景
在處理資料時,我們經常會遇到需要標識重複條目的情況。例如,在處理客戶資訊時,我們需要標識具有相同姓名和聯絡方式的重複條目。這對於資料清理和資料分析非常重要。在本文中,我們將介紹使用 Python 標記具有相同名稱條目的方法。
2、解決方案
為了解決這個問題,我們可以使用 Python 中的
csv
模組來讀取和處理 CSV 檔案。以下是詳細的步驟:
-
首先,我們需要匯入
csv
模組。
import csv
-
然後,我們使用
csv.DictReader()
函式開啟 CSV 檔案並將其轉換為字典格式。
with( open( "ieca_first_col_fake_text.txt", "rU")) as f:
sheet = csv. DictReader( f, delimiter = "\t")
-
在讀取 CSV 檔案後,我們需要新增一個新的列來儲存標記。
sheet.fieldnames.append('flag')
-
接下來,我們需要遍歷 CSV 檔案中的每一行。
for row in sheet:
-
對於每一行,我們需要檢查該行的名稱與下一行的名稱是否相同。如果相同,則將標記增加 1。
if row[ 'name'] == next( sheet)[ 'name']:
row[ 'flag'] = row[ 'flag'] + 1
-
如果名稱不相同,則將標記設定為 0。
else:
row[ 'flag'] = 0
-
最後,我們將更新後的 CSV 檔案寫回磁碟。
with( open( "ieca_first_col_fake_text.txt", "w")) as f:
csv. writer( f, delimiter = "\t"). writerows( sheet)
-
執行上述程式碼後,您就可以看到具有相同名稱的條目已經被標記了。
程式碼例子:
import csv
myjson = []
with( open( "ieca_first_col_fake_text.txt", "rU")) as f:
sheet = csv. DictReader( f, delimiter = "\t")
sheet. fieldnames. append( 'flag')
print sheet. fieldnames
for row in sheet:
myjson. append( row)
flag_counter = 0
myjson[ 0][ 'flag'] = flag_counter
for i in range( len( myjson) - 1):
if myjson[ i][ 'name'] == myjson[ i + 1][ 'name']:
myjson[ i + 1][ 'flag'] = flag_counter + 1
else:
myjson[ i][ 'flag'] = flag_counter
flag_counter += 1
for i in range( len( myjson)):
print myjson[ i]
輸出:
['name', 'phone', 'email', 'website', 'area', 'degree', 'flag'] {'website': '', 'phone': '', 'flag': 0, 'name': 'Diane Grant Albrecht M.S.', 'email': '', 'area': None, 'degree': None} {'website': 'www.got.com', 'phone': '111-222-3333', 'flag': 1, 'name': 'Lannister G. Cersei M.A.T., CEP', 'email': 'cersei@got.com', 'area': None, 'degree': None} {'website': '', 'phone': '', 'flag': 2, 'name': 'Argle D. Bargle Ed.M.', 'email': '', 'area': None, 'degree': None} {'website': 'www.daManWithThePlan.com', 'phone': '000-000-1111', 'flag': 3, 'name': 'Sam D. Man Ed.M.', 'email': 'dman123@gmail.com', 'area': None, 'degree': None} {'website': None, 'phone': '', 'flag': 3, 'name': 'Sam D. Man Ed.M.', 'email': None, 'area': None, 'degree': None} {'website': 'www.daManWithThePlan.com', 'phone': '111-222-333', 'flag': 3, 'name': 'Sam D. Man Ed.M.', 'email': ' dman123@gmail.com', 'area': None, 'degree': None} {'website': '', 'phone': '', 'flag': 4, 'name': 'D G Bamf M.S.', 'email': '', 'area': None, 'degree': None} {'website': '', 'phone': '', 'flag': 5, 'name': 'Amy Tramy Lamy Ph.D.', 'email': '', 'area': None, 'degree': None}
在這個示例中,
find_unique_items
函式接受一個列表
items
,並使用集合
unique_items
來找到列表中的一個條目。最後,函式返回一個包含一個條目的集合。你可以直接遍歷這個集合或將其轉換為列表進行進一步處理。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3012294/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- excel相同名稱數量相加彙總 excel相同名稱自動合併求和Excel
- 對SDD介面上具有相似航班號的目標進行提示
- 目標檢測相關論文
- 盤點 Python 的目標受眾Python
- 【Python】中國有哪些同名的省市縣?Python
- python標準庫目錄Python
- css具有傾斜效果的橫條CSS
- python爬蟲中使用正則match( )方法匹配目標Python爬蟲
- ROS--雙目相機標定中遇到的問題ROS
- CVPR2017-目標檢測相關
- 如何抓住遊戲的目標使用者遊戲
- Python OpenCV 3 使用背景減除進行目標檢測PythonOpenCV
- 兩個目錄中,刪除其中一個目錄中同名檔案的做法
- 兩個相同路徑、不同包、相同名稱類載入
- MRAM與其他記憶體技術相比具有相對優勢記憶體
- git 使用者名稱密碼相關Git密碼
- 匿名黑客稱蘋果iCloud將成下一個攻擊目標黑客蘋果Cloud
- 目標匹配:匈牙利演算法的python實現演算法Python
- CVPR 2018 目標跟蹤相關論文
- 進階目標 -- 新的一年的進階目標
- python相關工具使用Python
- RecyclerView使用,優化,條目閃爍問題View優化
- 使用者下有同名物件引起的問題物件
- 使用Java 8的Stream API列出ZIP檔案中的條目JavaAPI
- 使用Costura.Fody工具將源DLL合併到目標EXE筆記筆記
- java中break標記的使用Java
- Python測試序列是否所有相鄰元素之間都具有升序關係Python
- canvas實現具有粒子效果的動態進度條Canvas
- 【RMAN】使用恢復目錄catalog備份目標資料庫的演示資料庫
- 牌類遊戲使用微服務重構筆記(一): 先定個小目標遊戲微服務筆記
- [新手開發記錄] 規劃網站目標網站
- python是什麼?python具有怎樣的特性?Python
- 介紹一個使用 cl_abap_corresponding 進行兩個內表不同名稱欄位賦值的快捷方法賦值
- 程式設計師的燈下黑:不要忘記你的目標程式設計師
- 使用 YOLO 進行實時目標檢測YOLO
- ImageJ軟體使用教程(三):目標計數
- python opencv如何實現目標區域裁剪功能PythonOpenCV
- asp.net頁面的相關標記:(<%$, <%=, <%, <%#, etc.)ASP.NET