#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])