Я пытаюсь использовать конкат pandas для двух фреймов данных, которые содержат повторяющиеся индексы.
Когда я пытаюсь конкатировать мои два фрейма данных, я получаю следующую ошибку
Форма переданных значений: (12, 180054), индексы подразумевают (12, 10000).
Чтобы лучше понять проблему, я создал два кадра данных:
df1 = pd.DataFrame([{'a':"2018-01-01",'b':2},{'a':"2018-01-01",'b':3},{'a':"2018-01-02",'b':4}],
columns = ['a','b']).set_index('a')
df1.index = pd.to_datetime(df1.index)
, который выглядит следующим образом:
b
a
2018-01-01 2
2018-01-01 3
2018-01-02 4
и
df2 = pd.DataFrame([{'a':"2018-01-01",'c':5},{'a':"2018-01-02",'c':6}],columns = ['a','c']).set_index('a')
df2.index = pd.to_datetime(df2.index)
Что выглядит следующим образом:
c
a
2018-01-01 5
2018-01-02 6
Это похоже на мой оригинальный Dataframe.Индексы дублируются и имеют формат даты и времени.
Однако concat (с осью = 1) прекрасно работает, создавая следующий фрейм данных
b c
a
2018-01-01 2 5
2018-01-01 3 5
2018-01-02 4 6
(что я и ожидал)
Однако, если я использую:
df3 = pd.DataFrame([{'a':"2018-01-01",'b':2},{'a':"2018-01-01",'b':3},{'a':"2018-01-03",'b':4}],
columns = ['a','b']).set_index('a')
df3.index = pd.to_datetime(df3.index)
, который выглядит как:
b
a
2018-01-01 2
2018-01-01 3
2018-01-03 4
вместо df1, он возвращает
Shape of passed values is (2, 6), indices imply (2, 4)
Единственная разница междуво-вторых, конечная дата df1 - 2018-01-02, а df3 - 2018-01-03.
Логически (по крайней мере для меня) должно возвращаться следующее:
b c
a
2018-01-01 2 5
2018-01-01 3 5
2018-01-02 Nan 6
2018-01-03 4 Nan
IЯ не понимаю, как он может правильно выполнять одно, но не другое, поскольку, если он не может обработать дублирующиеся индексы, он должен одинаково сработать на обоих.
Pandas concat: ValueError: Форма переданных значенийэто бла, индексы подразумевают, что бла2 - это в основном тот же вопрос, однако все респонденты говорят, что проблема заключается в дублировании индексов, однако это не может быть единственной причиной, поскольку concat действительно работает с дублированными индексами.
Iхотел бы привести в действиесоюзник понимает, что идет не так, и как обойти проблему.
Большое спасибо