#python #pandas
Вопрос:
У меня есть набор из 2 кадров данных, которые я импортировал через excel. В принципе, у меня есть список дат и цен акций, которые отличаются для обоих этих фреймов данных (один начинается в 1990 году, другой в 2007 году). Я хочу найти общие даты между обоими этими фреймами данных и объединить их, чтобы у меня был один столбец дат и соответствующие цены акций из фреймов данных 1 и 2.
ff = pd.read_excel('Europe_5_Factors_Daily.xlsx',sheet_name='Factors') pp = pd.read_excel('Europe_5_Factors_Daily.xlsx',sheet_name='Sheet1') ff =ff.iloc[:,0:4] idx = ff['Date'].reset_index(drop=True) == pp["Date"].reset_index(drop=True).tolist() print(idx)
Я получаю следующее сообщение об ошибке : Ошибка значения: (‘Длины должны совпадать для сравнения’, (8132,), (3457,)). Кто-нибудь знает, что здесь пошло не так? По сути, я пытаюсь найти номера индексных строк общих дат, чтобы затем получить эквивалентные строки.
Ответ №1:
import pandas as pd ff = pd.read_excel('Europe_5_Factors_Daily.xlsx',sheet_name='Factors') pp = pd.read_excel('Europe_5_Factors_Daily.xlsx',sheet_name='Sheet1') def find_common_dates(df1,df2): df1_dates = df1['Date'].tolist() df2_dates = df2['Date'].tolist() common_dates = list(set(df1_dates) amp; set(df2_dates)) return common_dates
Тогда беги
find_common_dates(ff,pp)