Sie from_items
wie diese verwenden können (vorausgesetzt, dass Ihre Listen sind von die gleiche Länge):
pd.DataFrame.from_items(zip(s.index, s.values))
0 1
0 1 4
1 2 5
2 3 6
oder
pd.DataFrame.from_items(zip(s.index, s.values)).T
0 1 2
0 1 2 3
1 4 5 6
abhängig von der gewünschten Ausgabe.
Dies kann viel schneller sein als eine apply
(wie in @Wen's answer verwendet, die jedoch auch für Listen unterschiedlicher Länge funktioniert):
%timeit pd.DataFrame.from_items(zip(s.index, s.values))
1000 loops, best of 3: 669 µs per loop
%timeit s.apply(lambda x:pd.Series(x)).T
1000 loops, best of 3: 1.37 ms per loop
und
%timeit pd.DataFrame.from_items(zip(s.index, s.values)).T
1000 loops, best of 3: 919 µs per loop
%timeit s.apply(lambda x:pd.Series(x))
1000 loops, best of 3: 1.26 ms per loop
Auch @Hatshepsut's answer ist ziemlich schnell (funktioniert auch für Listen unterschiedlicher Länge):
%timeit pd.DataFrame(item for item in s)
1000 loops, best of 3: 636 µs per loop
und
%timeit pd.DataFrame(item for item in s).T
1000 loops, best of 3: 884 µs per loop
schnellste Lösung scheint für Python 2 @Abdou's answer (getestet werden; funktioniert auch für Listen unterschiedlicher Länge; verwenden itertools.zip_longest
in Python 3.6 oder höher):
%timeit pd.DataFrame.from_records(izip_longest(*s.values))
1000 loops, best of 3: 529 µs per loop
Eine zusätzliche Option:
pd.DataFrame(dict(zip(s.index, s.values)))
0 1
0 1 4
1 2 5
2 3 6
Falls Sie es hinzufügen möchten, scheint @ Abdou 'itertools' Lösung noch schneller zu sein. aber erfordert diese zusätzliche Bibliothek. Könnte man auch die gleiche Beschränkung beachten, wo das gilt? – Hatshepsut
@Hatshepsut: Hinzugefügt. Gleiche Länge scheint nicht erforderlich zu sein, funktioniert auch gut für 's = pd.Series ([[1,2, 3,4], [4, 5,6]])' – Cleb