【问题标题】:How can I sort timestamp from following data dictionary?如何从以下数据字典中对时间戳进行排序?
【发布时间】:2022-01-07 12:18:17
【问题描述】:
代码:
import pandas as pd
from pycoingecko import CoinGeckoAPI
c=CoinGeckoAPI()
bdata=c.get_coin_market_chart_by_id(id='bitcoin',vs_currency='usd',days=30)
data_=pd.DataFrame(bdata)
print(data_)
data=pd.to_datetime(data_[prices],unit='ms')
print(data)
输出:
要求:
但我需要输出其中 4 列:
时间戳、价格、Market_caps、Total_volume
我想将时间戳格式更改为 to_datetime
在上面的代码中,我只是对 pycoingecko 中的比特币数据进行排序
示例:
【问题讨论】:
标签:
python
python-3.x
pandas
dataframe
python-requests
【解决方案1】:
您可以提取时间戳列并将其转换为日期,如下所示,只需对您的代码进行最少的更改,您可以通过将新列合并到您的数组来跟进:
import pandas as pd
from pycoingecko import CoinGeckoAPI
c=CoinGeckoAPI()
bdata=c.get_coin_market_chart_by_id(id='bitcoin',vs_currency='usd',days=30)
data_=pd.DataFrame(bdata)
print(data_)
#data=pd.to_datetime(data_["prices"],unit='ms')
df = pd.DataFrame([pd.Series(x) for x in data_["prices"]])
df.columns = ["timestamp","data"]
df=pd.to_datetime(df["timestamp"],unit='ms')
print(df)
【解决方案2】:
你可以把它转换成这样的数据框格式:
import pandas as pd
from pycoingecko import CoinGeckoAPI
c=CoinGeckoAPI()
bdata=c.get_coin_market_chart_by_id(id='bitcoin',vs_currency='usd',days=30)
prices = pd.DataFrame(bdata['prices'], columns=['TimeStamp', 'Price']).set_index('TimeStamp')
market_caps = pd.DataFrame(bdata['market_caps'], columns=['TimeStamp', 'Market Cap']).set_index('TimeStamp')
total_volumes = pd.DataFrame(bdata['total_volumes'], columns=['TimeStamp', 'Total Volumes']).set_index('TimeStamp')
# combine the separate dataframes
df_market = pd.concat([prices, market_caps, total_volumes], axis=1)
# convert the index to a datetime dtype
df_market.index = pd.to_datetime(df_market.index, unit='ms')
代码改编自this answer。