У меня есть 2 DataFrames df1 и df2 с одинаковыми именами столбцов ['a', 'b', 'c'] и индексируются по датам. Индекс даты может иметь одинаковые значения. Я хотел бы создать DataFrame df3 только с данными из столбцов ['c'], переименованными соответственно 'df1' и 'df2' и с правильным индексом даты. Моя проблема в том, что я не могу понять, как правильно слить индекс.Создание pandas DataFrame из столбцов других DataFrames с похожими индексами
df1 = pd.DataFrame(np.random.randn(5,3), index=pd.date_range('01/02/2014',periods=5,freq='D'), columns=['a','b','c'])
df2 = pd.DataFrame(np.random.randn(8,3), index=pd.date_range('01/01/2014',periods=8,freq='D'), columns=['a','b','c'])
df1
a b c
2014-01-02 0.580550 0.480814 1.135899
2014-01-03 -1.961033 0.546013 1.093204
2014-01-04 2.063441 -0.627297 2.035373
2014-01-05 0.319570 0.058588 0.350060
2014-01-06 1.318068 -0.802209 -0.939962
df2
a b c
2014-01-01 0.772482 0.899337 0.808630
2014-01-02 0.518431 -1.582113 0.323425
2014-01-03 0.112109 1.056705 -1.355067
2014-01-04 0.767257 -2.311014 0.340701
2014-01-05 0.794281 -1.954858 0.200922
2014-01-06 0.156088 0.718658 -1.030077
2014-01-07 1.621059 0.106656 -0.472080
2014-01-08 -2.061138 -2.023157 0.257151
DF3 DataFrame должны иметь следующий вид:
df3
df1 df2
2014-01-01 NaN 0.808630
2014-01-02 1.135899 0.323425
2014-01-03 1.093204 -1.355067
2014-01-04 2.035373 0.340701
2014-01-05 0.350060 0.200922
2014-01-06 -0.939962 -1.030077
2014-01-07 NaN -0.472080
2014-01-08 NaN 0.257151
Но с NaN в столбце df1, как индекс дата df2 шире. (В этом примере я получил бы NaN для следующих дат: 2014-01-01, 2014-01-07 и 2014-01-08)
Спасибо за вашу помощь.
Это лучшее решение, я бы сказал –
Привет, Спасибо за ответ. Быстрее и быстрее! – user3153467
Привет, я тестировал свои данные, но получаю сообщение об ошибке (AssertionError: длина индекса не соответствует значениям). Единственная причина, по которой, похоже, не работает, - это тип (df1 ['c']) => pandas.core.series.TimeSeries, а в моих данных: pandas.core.series.Series. Есть предположения ? – user3153467