使用Pandas篩選屬于某個(gè)列表中的數(shù)據(jù)

Jan. 15th, 2018

Pandas

最近一個(gè)小項(xiàng)目中匀伏,需要完成以下事情蜘醋。有一個(gè)csv文件,里面的每一條記錄是一個(gè)計(jì)算任務(wù)的編號荧关,內(nèi)容描述溉奕,在超算系統(tǒng)里的process ID以及計(jì)算結(jié)果的md5映射(列的名稱分別為“task_id”,“task_desc”忍啤,“process_id”和“md5”)加勤。另外,有一個(gè)文件存放著已完成的任務(wù)的process_ID同波。我的任務(wù)是查找出所有完成的任務(wù)的md5映射值鳄梅。

在SQL數(shù)據(jù)庫里,這是一個(gè)非常標(biāo)準(zhǔn)的查詢:

SELECT md5 FROM task_table WHERE process_id IN process_list;

使用Pandas我們也可以非常容易地完成這個(gè)查詢未檩。

關(guān)于更多SQL語句的Pandas對應(yīng)實(shí)現(xiàn)戴尸,可參見這一篇文章

構(gòu)建process_list:文件讀取

所有已完成任務(wù)的process_id被存在文件"completed_task.txt"中讹挎。文件的每一行是一個(gè)id校赤。因此得到process_list列表非常容易:

process_id = open("completed_task.txt", 'r').read().split('\n')

這里假設(shè)文件中沒有空行,而且換行符都是'\n'筒溃。由于csv文件中"process_id"都是以字符串存放(會有補(bǔ)零位)马篮, 因此我們保留其字符串格式而不轉(zhuǎn)換為整數(shù)。

Pandas Dataframe預(yù)處理和篩選

接下來我們讀取tasks.csv文件并進(jìn)行預(yù)處理怜奖,篩選和結(jié)果存放浑测。

import pandas as pd
from math import nan # 用于處理空缺位。
df = pd.read_csv('tasks.csv', sep='\t') # 此文件以tab符分割數(shù)據(jù)歪玲。
df['md5'].replace(nan, "", inplace=True) # 此問題并不需要這樣做迁央,不過有字符串處理的任務(wù)就需要
md5_selected = df[df['process_id'].isin(process_id)]['md5']
md5_list = md5_selected.tolist()
open('completed_md5.txt', 'w').write('\n'.join(md5_list)) # 將篩選的數(shù)據(jù)存儲到另一個(gè)文件中。

這里用到了以下知識點(diǎn)(敲黑板):

  1. pandas讀取csv文檔滥崩,設(shè)定分隔符岖圈。(作業(yè):自己回憶如何讀取Excel文檔。)
  2. 空白數(shù)據(jù)清洗:當(dāng)一個(gè)值缺失時(shí)钙皮,Pandas默認(rèn)使用math.nan代替蜂科。如果不對其預(yù)處理顽决,過后在進(jìn)行字符串操作時(shí)有可能產(chǎn)生錯(cuò)誤。這里將其替換成空行导匣。
  3. Pandas查詢才菠。md5_selected = df[df['process_id'].isin(process_id)]['md5']就是Pandas實(shí)現(xiàn)前面提到的那條SQL查詢語句的方法。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贡定,一起剝皮案震驚了整個(gè)濱河市赋访,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缓待,老刑警劉巖蚓耽,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旋炒,居然都是意外死亡田晚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門国葬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芹壕,你說我怎么就攤上這事汇四。” “怎么了踢涌?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵通孽,是天一觀的道長。 經(jīng)常有香客問我睁壁,道長背苦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任潘明,我火速辦了婚禮行剂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钳降。我一直安慰自己厚宰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布遂填。 她就那樣靜靜地躺著铲觉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吓坚。 梳的紋絲不亂的頭發(fā)上撵幽,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機(jī)與錄音礁击,去河邊找鬼盐杂。 笑死逗载,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的况褪。 我是一名探鬼主播撕贞,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼测垛!你這毒婦竟也來了捏膨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤食侮,失蹤者是張志新(化名)和其女友劉穎号涯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锯七,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡链快,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眉尸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片域蜗。...
    茶點(diǎn)故事閱讀 38,687評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖噪猾,靈堂內(nèi)的尸體忽然破棺而出霉祸,到底是詐尸還是另有隱情,我是刑警寧澤袱蜡,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布丝蹭,位于F島的核電站,受9級特大地震影響坪蚁,放射性物質(zhì)發(fā)生泄漏奔穿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一敏晤、第九天 我趴在偏房一處隱蔽的房頂上張望贱田。 院中可真熱鬧,春花似錦嘴脾、人聲如沸湘换。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彩倚。三九已至,卻和暖如春扶平,著一層夾襖步出監(jiān)牢的瞬間帆离,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工结澄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哥谷,地道東北人岸夯。 一個(gè)月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像们妥,于是被迫代替她去往敵國和親猜扮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容