Re: [問題]pandas的操作問題

作者: beatitude (...)   2015-07-09 22:54:15
其實用不到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檔?
作者: allen511081 (藍)   2015-07-10 12:38:00
感謝前輩的解答,自己想的太複雜了不過現在會出錯在df['birdName'].map(f),因為我是要用tttest1112裡的名字去原始資料裡搜尋,但是這個檔案好像有一些奇怪的字元,我不太會處理,還請前輩指導一下錯誤訊息:KeyError: 'birdName'
作者: beatitude (...)   2015-07-10 18:07:00
因為我沒有csv檔案,所以無法重現你的錯誤訊息
作者: allen511081 (藍)   2015-07-10 18:45:00
抱歉,附上下載連結,birds-1:https://goo.gl/2B6ym3ttttest1112:https://goo.gl/6IWQk5
作者: beatitude (...)   2015-07-10 21:10:00
code放在: https://goo.gl/9o9s31不過因為測試檔沒有涵蓋所有的鳥名,所以只拆出部分
作者: allen511081 (藍)   2015-07-10 21:42:00
好的,我會全部來測試看看感謝前輩的指導

Links booklink

Contact Us: admin [ a t ] ucptt.com