python—将时间戳列数据转换为日期时间时,价格列丢失

yhqotfr8  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(371)

我正在为价格分析准备数据,所以我创建了这段代码,从Coincecko api中提取价格提要,对所需列进行排序,更改标题名称并转换日期。
我面临的当前块是,一旦我将时间戳转换为日期时间,我就会丢失price列,那么如何将其与新的日期格式一起恢复?

import pandas as pd
from pycoingecko import CoinGeckoAPI

cg = CoinGeckoAPI()
response = cg.get_coin_market_chart_by_id(id='bitcoin',
                                            vs_currency='usd',
                                            days='90',
                                            interval='daily')

df1 = pd.json_normalize(response)

df2 = df1.explode('prices')
df2 = pd.DataFrame(df2['prices'].to_list(), columns=['dates','prices'])
df2 .rename(columns={'dates': 'ds','prices': 'y'}, inplace=True)
print('DATAFRAME EXPLODED: ',df2)

df2 = df2['ds'].mul(1e6).apply(pd.Timestamp)
df2 = pd.DataFrame(df2.to_list(), columns=['ds','y'])

df3 = df2.tail()
print('DATAFRAME TAILED: ',df3)

Dataframe 分解:

ds             y 

 0  1618185600000  59988.020959 
 1  1618272000000  59911.020595 
 2  1618358400000  63576.676041 
 3  1618444800000  62807.123233 
 4  1618531200000  63179.772446 
 ..            ...           ... 
 86 1625616000000  34149.989815 
 87 1625702400000  33932.254638 
 88 1625788800000  32933.578199 
 89 1625875200000  33971.297750 
 90 1625895274000  33738.909080

 [91 rows x 2 columns]

Dataframe 尾部:

86   2021-07-07 00:00:00 
87   2021-07-08 00:00:00 
88   2021-07-09 00:00:00 
89   2021-07-10 00:00:00 
90   2021-07-10 05:34:34 

Name: ds, type: datetime64[ns]
``` `ValueError: Shape of passed values is (91, 1), indices imply (91, 3)` 
bqucvtff

bqucvtff1#

更改:

df2 = df2['ds'].mul(1e6).apply(pd.Timestamp)
df2 = pd.DataFrame(df2.to_list(), columns=['ds','y'])

致:

df2['ds_datetime'] = df2['ds'].mul(1e6).apply(pd.Timestamp)
bbmckpt7

bbmckpt72#

试试这个:

import pandas as pd
from pycoingecko import CoinGeckoAPI

cg = CoinGeckoAPI()
response = cg.get_coin_market_chart_by_id(id='bitcoin',
                                            vs_currency='usd',
                                            days='90',
                                            interval='daily')

df1 = pd.json_normalize(response)

df2 = df1.explode('prices')
df2 = pd.DataFrame(df2['prices'].to_list(), columns=['dates','prices'])
df2.rename(columns={'dates': 'ds','prices': 'y'}, inplace=True)
print('DATAFRAME EXPLODED: ',df2)

df2['ds'] = df2['ds'].mul(1e6).apply(pd.Timestamp)

# df2 = pd.DataFrame(df2.to_list(), columns=['ds','y'])

df3 = df2.tail()
print('DATAFRAME TAILED: ',df3)

通过写作 df2 = df2['ds'].mul(1e6).apply(pd.Timestamp) ,您从df2中删除了价格列。

相关问题