您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将pandas系列列表转换为数据框

将pandas系列列表转换为数据框

作为@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  1
0  1  4
1  2  5
2  3  6

要么

pd.DataFrame.from_items(zip(s.index, s.values)).T

   0  1  2
0  1  2  3
1  4  5  6

取决于您所需的输出

这可能比使用aapply(在@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)).T
1000 loops, best of 3: 1.37 ms per loop

%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

此外@哈特谢普苏特的回答是相当快的(也适用于不同长度的列表):

%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).T
1000 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  1
0  1  4
1  2  5
2  3  6
其他 2022/1/1 18:40:34 有390人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶