Python Iterating Dataframe, затем проблемы с форматированием вывода

avatar
user13040190
8 августа 2021 в 17:37
23
1
1

Этот код выполняет итерацию по фрейму данных и выводит необходимую информацию, но у меня возникли проблемы, и я ищу предложения о том, как исправить нужный формат вывода. Не так сильно озабочен выходом в Excel - просто нужна помощь с «переформатированием»

Код пока...

import pandas as pd

boston = pd.read_excel('e1 Copy.xlsx')

for profile in boston.iterrows():

    print(profile)   

Учитывая этот набор данных

Профиль.....Дата.........1:00.......2:00......3:00

E1 ...........1/1/1998.....A.........B............ С

E1 ...........1/2/1998.....D.........E............ F

E1 ...........1/3/1998.....G.........H............ Я

Создайте следующий вывод в файл Excel с именем Output.xlsx

E1.......1/1/1999.......1AM.....A

E1.......1/1/1999.......2AM.....B

E1.......1/1/1999.......3AM.....C

E1........02.01.1999.......1AM.....D

E1........02.01.1999.......2AM.....E

E1........02.01.1999.......3AM.....F

E1.......1/3/1999.......1AM.....G

E1.......1/3/1999.......2AM.....H

E1........3.01.1999.......3AM.....I

Источник
Andrej Kesely
8 августа 2021 в 17:42
0

Почему дата вывода все 1/1/1999?

user13040190
8 августа 2021 в 17:46
0

упс - поправлю

user13040190
8 августа 2021 в 17:50
0

Исправлено! Спасибо!

Ответы (1)

avatar
Andrej Kesely
8 августа 2021 в 17:57
0

Если ваш df выглядит так:

  Profile      Date 1AM 2AM 3AM
0      E1  1/1/1998   A   B   C
1      E1  1/2/1998   D   E   F
2      E1  1/3/1998   G   H   I

тогда вы можете использовать .melt:

print(df.melt(["Profile", "Date"]).sort_values(by="Date"))

Отпечатки:

  Profile      Date variable value
0      E1  1/1/1998      1AM     A
3      E1  1/1/1998      2AM     B
6      E1  1/1/1998      3AM     C
1      E1  1/2/1998      1AM     D
4      E1  1/2/1998      2AM     E
7      E1  1/2/1998      3AM     F
2      E1  1/3/1998      1AM     G
5      E1  1/3/1998      2AM     H
8      E1  1/3/1998      3AM     I