2014-03-02 74 views
1

我想將具有刻度數據的CSV文件轉換爲每日價格和數量。我所擁有的csv文件格式爲:unix,價格,音量。將刻度數據轉換爲每日

groupby函數只讓我以unix秒爲單位組合。獲得每日收盤價格以及每日交易量的總和的好方法是什麼?

我使用python 2.7並安裝了熊貓,但我還不是很熟悉它。

真的,我有什麼工作,最遠的是這樣的:

import pandas as pd 

data = pd.read_csv('file.csv',names=['unix','price','vol']) 

datagr = data.groupby('unix') 
dataPrice = datagr['price'].last() 
dataVol = datagr['vol'].sum() 

的樣本數據:

1391067323,772.000000000000,0.020200000000 
1391067323,772.000000000000,0.020000000000 
1391067323,771.379000000000,1.389480000000 
1391067323,772.000000000000,1.244540000000 
1391067326,774.955000000000,0.084830600000 
1391067326,774.955000000000,0.084833400000 
1391067327,774.955000000000,0.084830600000 
1391067331,774.953000000000,0.200000000000 
1391067336,774.951000000000,0.101202000000 

這檢索每UNIX秒的最後價格和總結行業的體積發生在unix第二。問題是,這組到UNIX第二,我不希望使用的,因爲時間因素,任何超費解方法

+2

你能1.顯示你解析數據和2顯示了一些嘗試,在你寫 –

回答

2

可以轉換Unix時間大熊貓的使用日期時間to_datetime

df['unix'] = pd.to_datetime(df['unix'], unit='s') 

現在,您現在可以設置此爲索引和resample

df = df.set_index('unix') 

df.resample('D', how={'volume': 'sum', 'price': 'last'}) 

注:我們使用用於各個列不同的方法。

例子:

In [11]: df = pd.DataFrame(np.random.randn(5, 2), pd.date_range('2014-01-01', periods=5, freq='H'), columns=list('AB')) 

In [12]: df 
Out[12]: 
          A   B 
2014-01-01 00:00:00 -1.185459 -0.854037 
2014-01-01 01:00:00 -1.232376 -0.817346 
2014-01-01 02:00:00 0.478683 -0.467169 
2014-01-01 03:00:00 -0.407009 0.290612 
2014-01-01 04:00:00 0.181207 -0.171356 

In [13]: df.resample('D', how={'A': 'sum', 'B': 'last'}) 
Out[13]: 
        A   B 
2014-01-01 -2.164955 -0.171356 
+0

感謝一些代碼的例子!這個伎倆 – user1286695

相關問題