所以,我有很多我想要搞乱的原始交易数据,所以我想把它改成olhc格式,以便更容易分析。因此,在快速研究这个问题时,我发现了python中的pandas,更具体地说是这个命令
df.resample('60s', how={'price': 'ohlc'})
所以,我的所有数据都在csv文件中,所以我正在运行的是
df=pd.read_csv("xao.csv")
df.resample('60s', how={'price': 'ohlc'})
如果我正确这是正确的格式和命令,我的问题是我相信的时间格式,我不知道如何改变csv中的时间格式。
我的csv采用以下格式
unixtimecode,价格,体积
所以样本行是
1419031147 453.3 0.050
那么将时间从unix时间戳转换为重新采样代码的可用时间格式的简单方法是什么?
所以,感谢nitin我现在有时间处理我认为正确的格式,运行print df.tail()
产量
Date price volume
824184 2014-12-19 23:19:07 434.9 0.050
824185 2014-12-19 23:19:48 434.7 0.011
824186 2014-12-19 23:19:48 434.9 0.039
824187 2014-12-19 23:20:29 434.9 0.050
824188 2014-12-19 23:21:09 434.9 0.050
我认为是正确的,但运行df.resample('60s', how={'price': 'ohlc'})
仍然无效,它会给出错误TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
,为什么会这样?
edit2,设法让它发挥作用。
对于通过google / future me发现此内容的任何人,请使用我使用的代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.read_csv("xao.csv")
df['Date'] = pd.to_datetime(df['Date']*int(1e9))
df.Date=pd.to_datetime(df.Date, unit = 's')
df = df.set_index('Date').astype('float64')
df['price'].resample('60s',how='ohlc')
答案 0 :(得分:0)
使用pandas to_datetime转换unixtimestamp。您可以将csv中的时间码读作整数,然后应用pd.to_datetime
import pandas as pd
df = pd.DataFrame({'timecode' : [1419031147], 'price' : [453.3], 'volume' : [0.050]})
pd.to_datetime(df.timecode, unit = 's')
这将产生,
0 2014-12-19 23:19:07
Name: timecode, dtype: datetime64[ns]
答案 1 :(得分:0)
您应该将日期列作为索引,以便重新采样。