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?

Odpowiedzi:


266

Wywołaj pd.DataFramekonstruktora bezpośrednio:

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

   Heading1  Heading2
0         1         2
1         3         4

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.