pd.concat () не объединяется с одним и тем же индексом - PullRequest
0 голосов
/ 23 октября 2018

У меня есть df, содержащий прогнозы под названием fcst, которые выглядят следующим образом:

             yhat        yhat_lower  yhat_upper
ds          
2015-08-31  -0.443522   -19.067399  17.801234
2015-09-30  6.794625    -31.472186  46.667981
...

После выполнения этого преобразования:

fcst2 = fcst["yhat"].to_frame().rename(columns={"yhat":"test1"})
fcst3 = fcst["yhat"].to_frame().rename(columns={"yhat":"test2"})

Я хочу объединить их в индексе даты какнапример:

pd.concat([fcst2,fcst3])

Но я получаю кадр данных, который не выровнен по индексу:

             test1     test2
ds      
2015-08-31  -0.443522   NaN
2015-09-30  6.794625    NaN
... ... ...
2017-05-31  NaN 95.563262
2017-06-30  NaN 85.829916

, и это несмотря на:

(fcst2.index == fcst3.index).any()

с возвратом True.

Мой вопрос: почему два индекса данных не объединяются в индексе и что я могу сделать, чтобы решить эту проблему?

Я знаю о функции соединения, но, поскольку некоторые даты будут отсутствовать в некоторых других фреймах данных, которые я планирую добавить, я считаю, что функция concat могла бы быть лучше.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Не работает, потому что pd.concat имеет значение по умолчанию для параметра axis=0.Так что вы можете либо вызвать функцию с axis=1, как предложено Домиником Полом, либо использовать вместо нее функцию join.Следует примеру:

# data to create the dataframes with
data_1 = [1,2,3,4,5]
index_1 = ['a','b','c','d','e']
data_2 = [6,7,8,9,10]
index_2 = ['b','d','e','a','c']

# create dataframes
df_1 = pd.DataFrame({'data_1':data_1, 'new_index':index_1})
df_2 = pd.DataFrame({'data_2':data_2, 'new_index':index_2})

# setting new index to test unaligned indexes
df_1.set_index('new_index', inplace=True, drop=True)
df_2.set_index('new_index', inplace=True, drop=True)

# join operation is performed on indexes
df_1.join(df_2)
0 голосов
/ 23 октября 2018

Вызов concat с axis, установленным на 1:

pd.concat([df1, df2], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...