如何从以下数据字典中对时间戳进行排序?

Posted

技术标签:

【中文标题】如何从以下数据字典中对时间戳进行排序?【英文标题】: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 中的比特币数据进行排序

示例:

【问题讨论】:

这能回答你的问题吗? How to parse out lists returned by an API into a pandas dataframe 【参考方案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。

【讨论】:

以上是关于如何从以下数据字典中对时间戳进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中对大量字典进行排序而不加载到内存中

如何在 Python 中对字典列表进行多重排序? [复制]

在 C# Windows 窗体中对字典进行排序[重复]

如何在 Python 中对存储在字典中的 IP 地址进行排序?

在Python列表中对嵌套字典进行排序? [复制]

如何在Swift 5中对[int:String]的字典进行排序[重复]