作者beatitude (精算業小卒)
看板Python
標題Re: [問題]pandas的操作問題
時間Thu Jul 9 22:54:15 2015
其實用不到csv,
你的資料檔一樣可由pandas讀入:
df = pd.read_csv('tttest1112.csv')
dat = pd.read_csv('bird-1.csv')
把多餘的括號移除:
# remove parenthesis
f = lambda s: s.split('(')[0]
df['birdName'] = df['birdName'].map(f)
執行篩選並存擋:
for birdname in df['birdName']:
savepath = 'your/file/path/' + birdname + '.csv'
dat[dat['birdName']==birdname].to_csv(savepath)
※ 引述《allen511081 (藍)》之銘言:
: 抱歉,題目無法詳述我的問題,先將我的程式碼貼上
: # -*- coding: utf-8 -*-
: import pandas as pd
: import csv
: df = pd.read_csv('birds-1.csv',low_memory=False)
: dfs=[]
: names=[]
: with open('tttest1112.csv','rb') as csvfile:
: records = csv.reader((line.replace('\0','') for line in csvfile),
: delimiter=",")
: for row in records: ##將原始資料存入
: for i in xrange(1,6,1):
: df2=df[df['birdName'].isin(row)]
: df2.to_csv('./'+str(i)+'.csv',index=False)
: 最近我重新開始我的資料剖析,在pandas這邊遇到一樣存檔問題,
: 而這次比較不一樣的是,我一個tttest1112.CSV測試檔裡放鳥名,
: 附圖:https://goo.gl/zxLWk7
: 我要從這個CSV裏頭,
: 將鳥名傳到上面的isin()後,對原始資料(df)做特定值的選取,
: https://goo.gl/dQKKuH
: 之後再存成新的CSV檔,而這樣的語法寫完後,可以產生5個CSV檔,
: 但是裡面的資料都會是最後一個鳥名的資料(我記得DF好像只會存最後一筆的資料?),
: 請問對於DF的操作有沒有辦法讓五種鳥的資料分別存一個CSV檔?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.113.106
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1436453659.A.A37.html
推 allen511081: 感謝前輩的解答,自己想的太複雜了 07/10 12:38
→ allen511081: 不過現在會出錯在df['birdName'].map(f),因為我是 07/10 12:39
→ allen511081: 要用tttest1112裡的名字去原始資料裡搜尋,但是這個 07/10 12:40
→ allen511081: 檔案好像有一些奇怪的字元,我不太會處理,還請前輩 07/10 12:41
→ allen511081: 指導一下 07/10 12:41
→ allen511081: 錯誤訊息:KeyError: 'birdName' 07/10 12:42
→ beatitude: 因為我沒有csv檔案,所以無法重現你的錯誤訊息 07/10 18:07
→ beatitude: 不過因為測試檔沒有涵蓋所有的鳥名,所以只拆出部分 07/10 21:12
推 allen511081: 好的,我會全部來測試看看 07/10 21:42
→ allen511081: 感謝前輩的指導 07/10 21:42
※ 編輯: beatitude (1.163.108.193), 07/11/2015 14:19:34