使用DatetimeIndex将价格代码加载到Pandas数据框中

时间:2017-09-02 14:20:44

标签: python pandas numpy

我想知道是否有一种简单的方法可以使用DateTimeIndex将json数据加载到Pandas DataFrame中。

data={"date":1405699200,"high":0.0045388,"low":0.00403001,"open":0.00404545,"close":0.00435873,"volume":44.34555992,"quoteVolume":10311.88079097,"weightedAverage":0.00430043},..]

第一列是时间戳。我想让Pandas将其加载为DateTimeIndex。 可能吗?我尝试过类似的东西:

df = pd.DataFrame(data, index=['date'])

但没有成功。 感谢。

5 个答案:

答案 0 :(得分:1)

这个解决方案怎么样?好像你的data变量是一个列表所以这是基于:

df = pd.DataFrame(data, index=pd.to_datetime([i.get('date') for i in data], unit= 's'))


                        close        date      high      low      open  \
2014-07-18 16:00:00  0.004359  1405699200  0.004539  0.00403  0.004045   

                      quoteVolume    volume  weightedAverage  
2014-07-18 16:00:00  10311.880791  44.34556           0.0043  


DatetimeIndex(['2014-07-18 16:00:00'], dtype='datetime64[ns]', freq=None)

答案 1 :(得分:1)

根据this github issue,似乎尚未实现为数据框构造函数中的特定列指定数据类型;作为解决方法,您可以使用astype并在构造数据框之后传递字典参数以转换列的数据类型:

df = pd.DataFrame(data).astype({'date': '<M8[s]'}).set_index('date')
df

enter image description here

答案 2 :(得分:0)

您可以将date列转换为datetime并将其设置为数据框的索引:

df1 = df.assign(date=pd.Timestamp.fromtimestamp(df.date)).set_index('date')

此时,数据框df1的索引是date列,是DateTimeIndex对象。

print(df1.index)
# DatetimeIndex(['2014-07-18 12:00:00'], dtype='datetime64[ns]', name='date', freq=None)

答案 3 :(得分:0)

您可以将时间戳转换为日期时间。

import datetime as dt
import pandas as pd
data={"date":1405699200,"high":0.0045388,"low":0.00403001,"open":0.00404545}
data['date'] = dt.datetime.fromtimestamp(data['date']).strftime('%Y-%m-%d %H:%M:%S') 
df = pd.DataFrame(data, index=['date'])

答案 4 :(得分:0)

我最终得到了:

df = pd.read_json(url, orient='records', convert_dates=True)
df.index = df['date']

感谢。