我正在对coinmarketcap.com进行API调用,并转换返回到pandas数据帧的JSON对象。我想知道是否有任何方法可以将数据框列存储为常量并在函数外部使用它?
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调用中获取新的供应数据?
答案 0 :(得分:0)
据我了解,您正在寻求将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。