Mam tablicę Numpy składającą się z listy list reprezentujących dwuwymiarową tablicę z etykietami wierszy i nazwami kolumn, jak pokazano poniżej:
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
Chciałbym, aby wynikowa DataFrame miała Row1 i Row2 jako wartości indeksu, a Col1, Col2 jako wartości nagłówka
Mogę określić indeks w następujący sposób:
df = pd.DataFrame(data,index=data[:,0]),
nie jestem jednak pewien, jak najlepiej przypisać nagłówki kolumn.
Odpowiedzi:
Trzeba określić
data
,index
icolumns
doDataFrame
konstruktora, na przykład:edycja : jak w komentarzu @joris, może być konieczna zmiana powyżej,
np.int_(data[1:,1:])
aby mieć poprawny typ danych.źródło
DataFrame
nie ma jakiegoś „skrótu”? Jest to w zasadzie sposób, w jakicsv
są ładowane - i mogą być zarządzane przez domyślną obsługę wielu czytników csv. Przydałaby się analogiczna struktura dla plików df.Oto łatwe do zrozumienia rozwiązanie
źródło
Series
nazwy ... to nie jest skalowalne.Zgadzam się z Jorisem; wygląda na to, że powinieneś robić to inaczej, jak w przypadku wielu tablic rekordów . Modyfikując „opcję 2” z tej świetnej odpowiedzi , możesz to zrobić w następujący sposób:
źródło
Można to zrobić po prostu używając from_records z pand DataFrame
źródło
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
.źródło
Dodając do odpowiedzi @ behzad.nouri - możemy stworzyć procedurę pomocniczą do obsługi tego typowego scenariusza:
Wypróbujmy to:
źródło