Я использую loc, чтобы получить серию транзакций для пользователя и преобразовать их в фрейм данных.
Кажется, что всякий раз, когда у пользователя есть 1 транзакция, результатом является DF с'action_date 'на вертикальной оси
Если есть несколько результатов, user_id (msno) находится на вертикальной оси.
Мне удалось решить эту проблему, добавив оператор if, чтобы проверить, является ли 1-й столбец транзакцией «date_date», и если это не так, я транспонирую его, но я ищу более чистый способ.
if df.columns.values[0] != 'transaction_date':
df =df.T
trans_train.loc['++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI=',['transaction_date','membership_expire_date']]
Серия для нескольких результатов:
msno transaction_date membership_expire_date
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-03-20 2016-04-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-04-20 2016-05-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-05-20 2016-06-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-06-20 2016-07-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-07-20 2016-08-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-08-20 2016-09-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-09-20 2016-10-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-10-20 2016-11-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-11-20 2016-12-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2016-12-20 2017-01-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2017-01-20 2017-02-20
++0/NopttBsaAn6qHZA2AWWrDg7Me7UOMs1vsyo4tSI= 2017-02-20 2017-03-20
Ряд, который я получаю за одну транзакцию, таков:
++096narOxHnDPtbtUtB4WDqDy8EJacQypdqDYBHmmY=
transaction_date 2016-11-26 00:00:00
membership_expire_date 2016-12-03 00:00:00
Я хотел бы получить ниже, но без использования условия:
msno transaction_date membership_expire_date
++096narOxHnDPtbtUtB4WDqDy8EJacQypdqDYBHmmY= 2016-11-26 00:00:00 2016-12-03 00:00:00