Pandas:如何根据日期使一个数据框适应另一个?

问题描述

我有两个数据框,用于收集两种不同股票的历史价格系列。应用 describe () 我注意到第一只股票的元素是 1291,而第二只股票的元素是 1275。这种差异是由于两种证券在不同的证券交易所上市,因此在某些日期显示差异。我想要做的是保留两个单独的数据帧,但请确保在第一个数据帧中,删除第二个数据帧中不存在日期的所有行,以便完美匹配两个数据帧来执行分析。我已经读到有诸如 merge () 或 join () 之类的函数,但我一直无法很好地理解如何使用它们(如果这些函数是正确的)。我感谢那些愿意花时间回答我的问题的人。

"ValueError: all the input array dimensions for the concatenation axis must match exactly,but along dimension 1,the array at index 0 has size 1275 and the array at index 1 has size 1291"

谢谢

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader as web
from scipy import stats
import seaborn as sns
pd.options.display.min_rows= None
pd.options.display.max_rows= None

tickers = ['disW.MI','IXJ','NRJ.PA','SGOL','VDC','VGT']
wts= [0.19,0.18,0.2,0.08,0.09,0.26]

price_data = web.get_data_yahoo(tickers,start = '2016-01-01',end = '2021-01-01')
price_data = price_data['Adj Close']

ret_data = price_data.pct_change()[1:]
port_ret = (ret_data * wts).sum(axis = 1)

benchmark_price = web.get_data_yahoo('ACWE.PA',end = '2021-01-01')
                               
benchmark_ret = benchmark_price["Adj Close"].pct_change()[1:].dropna()

#From Now i get error

sns.regplot(benchmark_ret.values,port_ret.values)
plt.xlabel("Benchmark Returns")
plt.ylabel("Portfolio Returns")
plt.title("Portfolio Returns vs Benchmark Returns")
plt.show()

(beta,alpha) = stats.linregress(benchmark_ret.values,port_ret.values)[0:2]
                
print("The portfolio beta is",round(beta,4))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...