2015-05-29 1 views
56

Jak wziąć wiele list i umieścić je jako różne kolumny w ramce danych python? Próbowałem podążać za Read lists into columns of pandas DataFrame, ale miałem pewne problemy.Radzenie wielu list w ramce danych

Próba 1:

  • Mają trzy listy i ZIP je ze sobą i używać, res = zip (lst1, lst2, lst3)
  • Plony tylko jedna kolumna

Próba 2:

percentile_list = pd.DataFrame({'lst1Tite' : [lst1], 
'lst2Tite' : [lst2], 
'lst3Tite':[lst3] 
    }, columns=['lst1Tite','lst1Tite', 'lst1Tite']) 

- daje jeden wiersz przez 3 kolumny (powyższy sposób) lub jeśli przenosę 3 wiersze i 1 kolumna

Jak uzyskać 100 wierszy (długość każdej niezależnej listy) o 3 kolumny (trzy listy) pandas?

Odpowiedz

110

myślę, że jesteś prawie tam, spróbuj usunąć dodatkowe nawiasy kwadratowe wokół lst'S (Również nie trzeba określać nazwy kolumn podczas tworzenia się dataframe z dict jak ta):

lst1 = range(100) 
lst2 = range(100) 
lst3 = range(100) 
percentile_list = pd.DataFrame(
    {'lst1Title': lst1, 
    'lst2Title': lst2, 
    'lst3Title': lst3 
    }) 

percentile_list 
    lst1Title lst2Title lst3Title 
0   0   0   0 
1   1   1   1 
2   2   2   2 
3   3   3   3 
4   4   4   4 
5   5   5   5 
6   6   6   6 
... 

Jeśli potrzebujesz nieco bardziej wydajnych rozwiązań można użyć np.column_stack zamiast zip jak w pierwszej próbie, to nie ma wokół 2x SpeedUp na przykład tu jednak pojawia się trochę kosztem czytelności moim zdaniem:

percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]), 
           columns=['lst1Title', 'lst2Title', 'lst3Title']) 
+0

Idealny! Wielkie dzięki, zaakceptuje, kiedy pozwala mi! – jfalkson

+1

Często używam tej odpowiedzi. Dziękuję Ci. –

+0

To jest idealne. Dziękujemy –

8

Wystarczy dodać, że za pomocą pierwszego podejścia można to zrobić tak -

pd.DataFrame(list(map(list, zip(lst1,lst2,lst3)))) 
16

dodając do odpowiedzi Aditya Guru jest tutaj. Nie ma potrzeby korzystania z mapy. Możesz to zrobić po prostu przez:

pd.DataFrame(list(zip(lst1, lst2, lst3))) 

Spowoduje to ustawienie nazw kolumn jako 0,1,2. Aby ustawić własne nazwy kolumn, możesz przekazać argument słowa kluczowego columns do powyższej metody.

pd.DataFrame(list(zip(lst1, lst2, lst3)), 
       columns=['lst1_title','lst2_title', 'lst3_title'])