我正在对coinmarketcap.com进行API调用,并将返回的JSON对象转换为pandas数据帧。我想知道是否有任何方法可以将数据框列存储为常量并在函数外部使用它?
def get_cmc_supply():
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
parameters = {
'start': '13',
'limit': '13',
'convert': 'USD',
}
header = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': '###################',
}
data = requests.get(url, headers = header,timeout=10).json()
records = []
for item in data["data"]:
records.append(
{
"name": item['symbol'],
"supply": item['circulating_supply'],
}
)
df = pd.DataFrame.from_records(records)
df = df.rename(columns={"name":"symbol"})
df = df.set_index('symbol')
return df
get_cmc_supply()
我如何存储df
,这样我就可以在函数外部访问它,而不需要再次调用get_cmc_supply()函数并从API调用中获得新的供应数据?
发布于 2019-04-24 07:28:33
如果我理解的话,您希望在函数外部保存DataFrame,这样您就不必再次重新创建它。
在函数外部设置数据帧。
df = get_cmc_supply()
现在,您可以随时使用它。
如果您想在关闭程序后将其存储起来以备将来使用,则可以使用pickle。
保存数据帧(df)以供下次使用
filename = "your_file_name.pickle"
with open(filename, "wb") as f:
pickle.dump(df, f)
使用此选项查看"your_file_name.pickle“文件。从pickle文件中打开现有的原始数据。
filename = "your_file_name.pickle"
infile = open(filename, "rb")
df = pickle.load(infile)
infile.close()
如果您真的希望使数据帧不可变,请查看static frame。
https://stackoverflow.com/questions/55820296
复制相似问题