作为@Hatshepsut在评论中指出,
from_items被弃用的0.23版本。该链接建议
from_dict改用,因此可以将旧答案修改为:
--------------------------------------------------旧答案------------------------------------------------pd.Dataframe.from_dict(dict(zip(s.index, s.values)))
您可以这样使用
from_items(假设您的列表长度相同):
pd.Dataframe.from_items(zip(s.index, s.values)) 0 10 1 41 2 52 3 6
要么
pd.Dataframe.from_items(zip(s.index, s.values)).T 0 1 20 1 2 31 4 5 6
取决于您所需的输出。
这可能比使用a
apply(在@Wen的答案中使用,但是对于不同长度的列表也适用)要快得多:
%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)).T1000 loops, best of 3: 1.37 ms per loop
和
%timeit pd.Dataframe.from_items(zip(s.index, s.values)).T1000 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
此外@哈特谢普苏特的回答是相当快的(也适用于不同长度的列表):
%timeit pd.Dataframe(item for item in s)1000 loops, best of 3: 636 µs per loop
和
%timeit pd.Dataframe(item for item in s).T1000 loops, best of 3: 884 µs per loop
最快的解决方案似乎是@Abdou的答案(经过Python
2测试;也适用于不同长度的列表;
itertools.zip_longest在Python 3.6+中使用):
%timeit pd.Dataframe.from_records(izip_longest(*s.values))1000 loops, best of 3: 529 µs per loop
附加选项:
pd.Dataframe(dict(zip(s.index, s.values))) 0 10 1 41 2 52 3 6
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)