Я хотел бы объединить / объединить / ... 2 кадра данных так, чтобы я получил 3-й кадр данных ниже (это 1-й кадр данных + var2 из 2-го кадра данных для каждой комбинации тикера / даты из 1-го):
1-й кадр данных:
dict1 = [{'date': '2016-11-29','var1': 'x1'},
{ 'date': '2016-11-29','var1': 'x2'},
{ 'date': '2016-11-29','var1': 'x3'},
{'date': '2016-11-29','var1': 'x4'},
{'date': '2016-11-30','var1': 'x5'},
{'date': '2016-11-30','var1': 'x6'}]
df1 = pd.DataFrame(dict1, index=['ge','jpm','fb', 'msft','ge','jpm'])
2-й кадр данных:
dict2 = [{'date': '2016-11-29','var2': 'y1'},
{ 'date': '2016-11-29','var2': 'y2'},
{ 'date': '2016-11-29','var2': 'y3'},
{'date': '2016-11-29','var2': 'y4'},
{'date': '2016-11-30','var2': 'y5'},
{'date': '2016-11-30','var2': 'y6'},
{'date': '2016-11-30','var2': 'y7'},
{'date': '2016-11-30','var2': 'y8'}]
df2 = pd.DataFrame(dict2, index=['aapl', 'msft','ge','jpm','aapl', 'msft','ge','jpm'])
3-й (целевой) кадр данных:
dict3 = [{'date': '2016-11-29','var1': 'x1','var2': 'y3'},
{ 'date': '2016-11-29','var1': 'x2','var2': 'y4'},
{ 'date': '2016-11-29','var1': 'x3','var2': 'NaN'},
{'date': '2016-11-29','var1': 'x4','var2': 'y2'},
{'date': '2016-11-30','var1': 'x5','var2': 'y7'},
{'date': '2016-11-30','var1': 'x6','var2': 'y8'}]
df3 = pd.DataFrame(dict3, index=['ge','jpm','fb', 'msft','ge','jpm'])
Обратите внимание, что кадры данных не являютсявыровнен, поэтому объединение должно обеспечить совпадение индекса и даты.То есть индекс и дата являются уникальными идентификаторами.Например, в 3-м кадре данных вы можете видеть, что 1-й строке нужен тикер «ge» с даты «2016-11-29».Кроме того, как уже упоминалось, мне нужны только данные, которые находятся в df1, что-либо в df2, кроме того, что не интересно (т. Е. Дополнительные даты или тикеры не имеют значения).