Python 板


LINE

※ 引述《allen511081 (藍)》之銘言: : ※ 引述《allen511081 (藍)》之銘言: : : 各位好,小弟上次抓的資料格式已經如我上次發問的樣子 : : title birdName count : : XXX yyy zzz : : XXX yyy zzz : : XXX yyy zzz : : XXX yyy zzz : : 但是我現在想要把格式改成以下的樣子,這樣可以方便以後的處理 : : title title title title birdName count birdName count birdName count : : XXX XXX XXX XXX yyy zzz yyy zzz yyy zzz =>為一筆 : : 後面的birdName和count是依據網頁資料的筆數決定,每個網頁的筆數不一定, 用了原 po 提供的範例檔,底下是好讀完整版 http://nbviewer.ipython.org/gist/ccwang002/6b51ae21a91cba13c2ef/Transform.ipynb 我是用 Python 3.4 跑的,2.x 要注意一下 unicode 的轉換。 你爬下的內容有 \ufeff 之類的字元沒有清,要小心欄位不要處理錯, 我有特別獨立出來成輸入的參數 (obs_cols) 。 import pandas as pd def flatten_obs(bird_obs, obs_cols, preserved_cols=None): """Flatten brid observations into one row record.""" keep_cols = preserved_cols if preserved_cols else [] # assume values preserved columns don't change keep_values = list(bird_obs.loc[0, keep_cols].values) # flatten bird observation flatten_obs = [] flatten_cols = [] for bird_ix, (bird, count) in ( bird_obs.loc[:, obs_cols].iterrows() # extract wanted columns ): flatten_obs.extend([bird, count]) # create incremental column suffix, starting 0 flatten_cols.extend([ 'bridName_%d' % bird_ix, # birdName_0, ... 'count_%d' % bird_ix, # count_0, ... ]) # join kept and flatten columns as DataFrame return pd.DataFrame( [keep_values + flatten_obs], # nested list required by DataFrame columns = keep_cols + flatten_cols ) 使用的話, orig_df = pd.read_csv('./items.csv') obs_cols = ['birdName', 'count'] preserved_cols = ['weather', 'location', 'time', 'date', 'birdCondition'] flatten_df = flatten_obs(orig_df, obs_cols, preserved_cols) 合併 flatten_df 的話可以用 pandas.concat,重覆的就放在一起, 遇上沒有的欄位,就會自動補 NaN 值(相當於對不同記錄的欄位做 OUTER JOIN) 用法: pd.concat(flatten_df_list) 我覺得你在爬的時候那些 preserved_cols 值並不會重覆出現,應該是你額外加的, 所以現在有種做兩次功(重覆->去重覆)的感覺,也許可以重想一下程式的流程。 這個版本的 code 為了好讀和方便可能不是最有效的方式, 也盡量不用 Numpy 函式來處理,因為不確定你對它的熟悉度。 pd.concat 可以完全不用,因為合併的欄位長什麼可以很簡單的預測(最多幾隻鳥) 這樣就能預先建立好一個矩陣。 CSV 我直接讀有格式錯誤,我使用的檔案都放在 https://gist.github.com/6b51ae21a91cba13c2ef -- 以後不玩程式碼上色了… PyCon APAC 2015 Call for Proposals! https://tw.pycon.org/2015apac/en/ 也誠徵志工喔(站內信或 [email protected]) --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.9.45
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1423672403.A.E89.html ※ 編輯: ccwang002 (114.44.9.45), 02/12/2015 00:37:33







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP