pandas - объединение наборов данных - PullRequest
0 голосов
/ 01 августа 2020

У меня есть 3 набора данных, которые я пытаюсь объединить с pandas.

Первый набор данных похож на этот. Он имеет несколько значений индекса для почтового индекса, поскольку в фрейме данных есть несколько ресторанов (я пытаюсь дать этим ресторанам больше демографических c контекста). возможно, два атрибута, ключ к одной паре значений.

    postcode          burgers                  
    2640              38064  
  
    
    postcode       soda     
    3000           23715
    3002             854
    3003             780
    3004              35
    3006            3288>

Они были упрощены.

При использовании concat или слияния с pandas я получаю ошибки

ValueError: Plan shapes are not aligned

С этим кодом

result = pd.concat(frames,join='outer')

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

Ожидаемый результат на основе комментария

В основном ищу гамбургеры и газированные напитки, которые нужно поместить во фрейм данных в качестве значения по почтовому индексу.

пример

    postcode      pop growth    burgers    soda   address       
        3793          3,577      123123    1231   AbyRoad
        3793          3,577      12351      5151   northst
        3971             26      6666      7777   northunder abby

1 Ответ

1 голос
/ 01 августа 2020

Во-первых, вам нужно убедиться, что столбец почтового индекса является (единственным) индексом для каждого из фреймов данных. Вам нужно запустить это для всех.

Затем, если у вас есть все фреймы данных с индексом в качестве почтового индекса. Поместите их в список под названием фреймы (список фреймов данных) и используйте следующий код.

dfList = [df1, df2, df3]
frames = [df.set_index('postcode') for df in dfList]
pd.concat(frames, axis=1)

Если это не сработает, попробуйте следующее -

from functools import reduce

frames = [df.reset_index() for df in dfList] #reset the indexes and add dfs into a list
df_final = reduce(lambda left,right: pd.merge(left,right,on='postcode'), frames)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...