Объединить коды категорий из двух разных фреймов данных, а затем применить их в виде столбца к каждому фрейму данных

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Я играю со знаменитым набором данных Titanic.

У меня есть train.csv и test.csv , загруженные в массив второго размера, который называется combined . и объединить Ticket столбцы каждого из них следующим образом:

all_tickets = combined[0]['Ticket'].append(combined[1]['Ticket'])

Теперь моя цель — применить одни и те же категориальные коды к каждому фрейму данных. Однако, когда я попробовал это для первого:

combined[0]['TicketCode'] = all_tickets.astype('category').cat.codes

Он жаловался: cannot reindex from a duplicate axis

Это имеет смысл, поскольку оба набора имеют разные размеры. Как я могу достичь своей цели в этой ситуации? Группировать заявки с помощью перечислителя диапазона?

Спасибо

Ответ №1:

В конце я просто создал dictionary и применил к обоим DataFrames :

 ticket_codes = {}
i = 0
grouped_series = combined[0]['Ticket'].append(combined[1]['Ticket'])
for g, _ in grouped_series.groupby(grouped_series):
    ticket_codes[g] = i
    i = i   1

for x in positions:
    combined[x]['TicketCode'] = combined[x]['Ticket'].apply(lambda y: ticket_codes[y])