我想知道是否有一种简单的方法可以使用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'])
但没有成功。 感谢。
答案 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
答案 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']
感谢。