我使用quandl来获取黄金的历史价格和消费者指数。并将指数更改为年度数据,但黄金历史价格为每月。我想根据“消费者价格指数”年度数据调整黄金价格每月数据。我该怎么办?
import pandas as pd
import quandl
start=pd.to_datetime("1970-10-31")
end=pd.datetime.now()
gold= quandl.get("WGC/GOLD_DAILY_USD",start_date=start, end_date=end, authtoken="F51kbhqij4J1o73V5vXT")
index= quandl.get("RATEINF/CPI_USA",start_date=start, end_date=end, authtoken="F51kbhqij4J1o73V5vXT")#RATEINF/CPI_USA
gold.rename(columns={"Value":"Close"},inplace=True)
gold.head()
index.resample("Y").mean() # get yearly consumer index data to adjust the monthly price of gold
答案 0 :(得分:0)
听起来最好的方法是合并年度和每月数据,然后继续进行计算。
(为便于阅读,我将您的“索引”数据帧称为“消费者”,因为在访问每个数据帧的日期时间索引时可能会造成混淆。)
开始于:
consumer = consumer.resample("y").mean()
您首先需要将年从日期时间索引中拉出:
gold = gold.reset_index()
consumer = consumer.reset_index()
gold['year'] = gold['Date'].dt.year
consumer['year'] = consumer['Date'].dt.year
然后按年份合并两个数据框:
gold = gold.merge(consumer,on='year')
并返回您的索引到日期时间:
gold = gold.set_index('Date')
这将使年度消费者指数信息与每月黄金价格信息相匹配,从而使您可以进行所需的任何调整。
例如,如果您想将两者分开:
gold['adjusted'] = gold['Close'] / gold['Value']