@irina_leifijtijhiodu

Почему при объединении двух датафреймов с помощью .merge в pandas datetime index меняются на обычные?

Добрый день.
Подскажите, почему при объединении двух датафреймов Left Join (один из них с datetime index, другой с обычными числовыми) с помощью .merge в pandas в получившемся датафрейме datetime index не сохраняются а выходят обычные?
Код:
in
cards = pd.read_csv('/content/drive/My Drive/для учебы/card_data.csv', encoding = 'cp1250') # подгружаем файл cards
cards = cards[::100] # выделение 100 элементов, для использования меньшего количества памяти
cards.head()

out
CustomerID TransactionNum
0 17850.0 127
100 14688.0 248
200 12431.0 241
300 13448.0 356
400 16218.0 212

in
data = pd.read_csv('/content/drive/My Drive/для учебы/data.csv', encoding = 'cp1250') # подгружаем файл cards
data['TotalCost'] = data['Quantity'] * data['UnitPrice'] # и выполняем все те же действия из первой задачи, создаем новый столбец TotalCost как произведение Quantity * UnitPrice
data.index = pd.to_datetime(data.InvoiceDate) # превращаем колонку InvoiceDate в индекс
data.drop('InvoiceDate', axis=1, inplace=True) # удаляем InvoiceDate
data = data[::100] # выделение 100 элементов, для использования меньшего количества памяти
data.head()

out
InvoiceNo StockCode Quantity UnitPrice CustomerID Country TotalCost
InvoiceDate
2010-12-01 08:26:00 536365 85123A 6 2.55 17850.0 United Kingdom 15.3
2010-12-01 09:37:00 536378 84519A 6 2.95 14688.0 United Kingdom 17.7
2010-12-01 10:03:00 536389 35004C 6 5.45 12431.0 Australia 32.7
2010-12-01 10:52:00 536398 22468 4 6.75 13448.0 United Kingdom 27.0
2010-12-01 11:29:00 536404 21061 12 0.85 16218.0 United Kingdom 10.2

in
new_data = data.merge(cards, on='CustomerID', how='left') # Left Join таблицы data и cards по общему столбцу CustomerID
new_data.head()

out
InvoiceNo StockCode Quantity UnitPrice CustomerID Country TotalCost TransactionNum
0 536365 85123A 6 2.55 17850.0 United Kingdom 15.3 127
1 536365 85123A 6 2.55 17850.0 United Kingdom 15.3 22
2 536365 85123A 6 2.55 17850.0 United Kingdom 15.3 226
3 536365 85123A 6 2.55 17850.0 United Kingdom 15.3 323
4 536378 84519A 6 2.95 14688.0 United Kingdom 17.7 248
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Попробуйте поиграться с параметрами индексов
pd.merge(df1, df2, left_index=True, right_index=True)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы