python - 将 Pandas 系列列表转换为数据框

标签 python pandas dataframe

我有一个由列表组成的系列

import pandas as pd
s = pd.Series([[1, 2, 3], [4, 5, 6]])

我想要一个 DataFrame,每列都有一个列表。

from_itemsfrom_recordsDataFrame Series.to_frame 似乎都不起作用。

如何做到这一点?

最佳答案

正如@Hatshepsut 在评论中指出的那样,from_itemsdeprecated as of version 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

取决于您想要的输出。

这比使用 apply(在 @Wen's answer 中使用,然而,它也适用于不同长度的列表)要快得多:

%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

还有 @Hatshepsut's answer非常快(也适用于不同长度的列表):

%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's answer (针对 Python 2 进行了测试;也适用于不同长度的列表;在 Python 3.6+ 中使用 itertools.zip_longest):

%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

关于python - 将 Pandas 系列列表转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901018/

相关文章:

python - 如何将数据写入 h5py 数据集

python - 无法根据python中的用户输入过滤csv表中的数据

python - 计算字典值的百分比

python - Pandas 与不同频率的数据帧合并(每小时和每天)

python - 等待调试器连接的 Visual Studio Code Python 超时

python - 在Python中使用正则表达式从文件名中获取剧集编号

Python pandas 将瞬时每小时数据重新采样为每日时间步长,包括 00 :00 of next day

python - 使用 aggfunc 时出现 pandas InvalidIndexError

python - 根据条件删除 Pandas 组

python - 在数据框中使用嵌套 if 条件