Объединение двух временных рядов с использованием pandas - PullRequest
0 голосов
/ 26 мая 2020

У меня два временных ряда. Обе серии имеют одинаковые столбцы. У них есть общие даты. Один из столбцов обеих серий - Close, представляющий цену закрытия. Я хочу присоединиться к этим ценам закрытия. Я использовал следующий код. Но в последней строке возникает ошибка.

dow=pd.read_csv("dow.csv",index_col="Date")
sensex=pd.read_csv("sensex.csv",index_col="Date")
dow_close=dow["Close"]
sensex_close=sensex["Close"]
dow_close.index=pd.to_datetime(dow_close.index)
sensex_close.index=pd.to_datetime(sensex_close.index)
dow_sensex_close=dow_close.join(sensex_close,how='inner')

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Основная проблема - это ваш метод подустановки. Используйте функцию .lo c для дополнительной настройки. Вы получите новый фрейм данных как фрейм данных, а не серию. Затем используйте функцию .join вместе с суффиксами ls и rs.

dow=pd.read_csv("dow.csv",index_col="Date")
sensex=pd.read_csv("sensex.csv",index_col="Date")
dow_close=dow.loc[:,["Close"]]
sensex_close=sensex.loc[:,["Close"]]
dow_close.index=pd.to_datetime(dow_close.index)
sensex_close.index=pd.to_datetime(sensex_close.index)
dow_sensex_close = dow_close.join(sensex_close,how='inner',lsuffix='_dow', rsuffix='_sensex')
dow_sensex_close.head()
1 голос
/ 26 мая 2020

Когда вы вызываете join , объект other может быть Series , но объект self должен быть просто DataFrame .

Итак, первое исправление должно выполняться:

dow_close.to_frame().join(sensex_close, ...)

Но этого недостаточно, так как у вас есть перекрывающиеся столбцы. Чтобы избежать другого исключения ( столбцы перекрываются, но не указан суффикс ), вы должны указать хотя бы одно из lsuffix и rsuffix .

My Предлагается указать их оба:

dow_sensex_close = dow_close.to_frame().join(sensex_close,
    how='inner', lsuffix='_dow', rsuffix='_sensex')
...