Wpis z mikrobloga

Chciałbym z mojego excela utworzyć sobie słownik w postaci (x, y) wiersz kolumna : wartosc. w taki sposób:

{
('A', 'D'): 1, ('A', 'E'): 4, ('A', 'F'): 7, ('B', 'D'): 2,
('B', 'E'): 5, ('B', 'F'): 8, ('C', 'D'): 3, ('C', 'E'): 6, ('C', 'F'): 9
}

Jak to ładnie zrobic na przyklad w pandas?

Coś takiego działa:

df = pd.readexcel('excel.xlsx')
d = df.set
index('id').unstack().to_dict()

lecz tylko jeśli dodam nazwe do swojej kolumny D, E, F np "id" lecz mi zalezy na tym zebym nie musiał tego robic, i zeby rozwiazanie było bardzo uniwersalne

#python #programowanie
blend - Chciałbym z mojego excela utworzyć sobie słownik w postaci (x, y) wiersz kolu...

źródło: comment_6dt5dNbwOGsBc9tclVEaD7djVyZN6tz5.jpg

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@blend: Czołem, przy wczytywaniu dataframe'u możesz użyc argumentu index_col.
Wtedy Twoj sposob z unstackiem powinien banglac.

df = pd.read_excel("excel.xlsx", index_col=0)
  • Odpowiedz
@jszafran: Super, dzięki. Myślę, że bez takich hackowych sztuczek by się nie obeszło. Muszę jeszcze pomyśleć nad twoim rozwiązaniem bo zauważyłem, że jak tabelka jest przesunięta o 1 w dół to zamiast ustawić offset na 1 to pozostaje na 0, jak jest więcej albo w ogóle to czyta ok ;)) pewnie ten header jeszcze trzeba obsłużyć

{('Unnamed: 1', nan): 'A', ('Unnamed: 1', 'D'): 1, ('Unnamed: 1', 'E'): 4, ('Unnamed: 1',
  • Odpowiedz