Фреймы данных с одним столбцом не будут объединяться: у каждого есть индекс в формате DateTimeIndex по умолчанию - PullRequest
0 голосов
/ 01 октября 2019

шпион - это столбец данных из 1 столбца изменений цены индекса S & P 500. Имя в одном столбце: «Доходность S & P500»

«g» - это 1-столбец данных с изменениями цены акций MSFT. Его столбец «Microsoft's Returns»

Используя метод df.columns.values, «spy» и «g» явно имеют только один столбец. У них также есть подобный индекс, но они не будут сливаться!

«g.index» возвращает следующее:

DateTimeIndex(['2005-01-03', '2005-01-04'....'2018-12-31'],
              dtype='datetime64[ns]', name='Date', length=3523, freq=None)

«spy.index» возвращает следующее:

DatetimeIndex(['2005-01-03', '2005-01-04'...'2018-12-31'],
          dtype='datetime64[ns]', name='Date', length=3523, freq=None)

Но при объединении «Microsoft»Возвращает »столбец становится заполненным NaN.

Есть идеи, что происходит? Ваша помощь очень ценится!

Вот как я пытался объединиться.

df_join = pd.concat([spy, g], ignore_index=False, sort=False)

Вот мой ввод:

#@title
import numpy as np
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
import statsmodels.api as sm
import pandas_datareader as pdr
import fix_yahoo_finance
from scipy import stats

# Set start and end date for stock prices
start_date = datetime(2005, 1, 1)
end_date = datetime(2019, 1, 1)

one_mon = pdr.DataReader('DGS1MO', 'fred', start_date, end_date)/100
rf = np.log(1+one_mon)/365

def load_stock_returns(ticker, name):
  p = pdr.get_data_yahoo(ticker, start=start_date, end=end_date)
  r = pd.DataFrame(p['Adj Close'] / p['Adj Close'].shift(1) - 1)
  r.columns = [name]
  return r

def plot_returns(r):
  plt.figure(figsize=(15,5))
  plt.plot(r)
  plt.ylabel('Returns')
  plt.legend(r.columns)
  plt.grid()
  plt.show()

spy = load_stock_returns('SPY', 'S&P500 Returns')

g = load_stock_returns('MSFT', "Microsoft Returns")

df_join = pd.concat([spy, g], ignore_index=False, axis=1, sort=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...