Pobieranie listy list do pand DataFrame

177

Czytam zawartość arkusza kalkulacyjnego na pandy. DataNitro ma metodę, która zwraca prostokątną selekcję komórek jako listę list. Więc

table = Cell("A1").table

daje

table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]

headers = table.pop(0) # gives the headers as list and leaves data

Jestem zajęty pisaniem kodu, aby to przetłumaczyć, ale przypuszczam, że jest to tak proste użycie, że musi istnieć metoda, aby to zrobić. Nie mogę znaleźć tego w dokumentacji. Jakieś wskazówki dotyczące metody, która to uprościłaby?

Joop
źródło

Odpowiedzi:

266

Wywołaj pd.DataFramekonstruktora bezpośrednio:

df = pd.DataFrame(table, columns=headers)
df

   Heading1  Heading2
0         1         2
1         3         4
EdChum
źródło
84

W podejściu wyjaśnionym przez EdChum powyżej wartości na liście są wyświetlane jako wiersze. Aby zamiast tego wyświetlić wartości list jako kolumny w DataFrame, po prostu użyj transpose () w następujący sposób:

table = [[1 , 2], [3, 4]]
df = DataFrame(table)
df = df.transpose()
df.columns = ['Heading1', 'Heading2']

Wynik to:

      Heading1  Heading2
0         1        3
1         2        4
Shoresh
źródło
6

Nawet bez poplisty, z którą możemy zrobićset_index

pd.DataFrame(table).T.set_index(0).T
Out[11]: 
0 Heading1 Heading2
1        1        2
2        3        4

Aktualizacja from_records

table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]

pd.DataFrame.from_records(table[1:],columns=table[0])
Out[58]: 
   Heading1  Heading2
0         1         2
1         3         4
YOBEN_S
źródło