2014-03-02 48 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

相关问题