将刻度数据转换为每日

2024-10-04 03:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想转换一个csv文件与滴答数据每日价格和数量。我的csv文件的格式是:unix,price,volume。在

groupby函数只让我用unix秒进行分组。什么是获得每日收盘价和每天成交量总和的好方法?在

我使用python2.7,也安装了pandas,但我还不太熟悉它。在

真的,我最想做的就是:

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()

样本数据:

^{pr2}$

这将检索每unix秒的最后一个价格,并求出unix秒内发生的交易量的总和。问题是它的分组是unix秒,出于时间考虑,我不想使用任何超复杂的方法


Tags: 文件csv数据方法pandasdata数量unix
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:23

可以使用^{}将unix时间转换为pandas的datetime:

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

现在可以将其设置为索引和resample

^{pr2}$

注意:我们对各个列使用了不同的方法。

示例:

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

相关问题 更多 >