python - 通过分隔符将 Pandas Series 拆分为 DataFrame

标签 python pandas dataframe split series

在这种情况下,我试图通过特定的分隔符 "; " 拆分 pandas series 对象。我想把它变成一个 dataframe 总会有相同数量的“列”,或者更准确地说,相同数量的 "; " 将指示列。我认为这可以解决问题,但事实并非如此 python, how to convert a pandas series into a pandas DataFrame?我不想遍历,我确信 pandas 已经创建了一个更有效的快捷方式。

有谁知道通过 "; " 将这个系列拆分为数据框的最有效方法?

#Example Data
SR_test = pd.Series(["a; b; c; d; e","aa; bb; cc; dd; ee","a1; b2; c3; d4; e5"])
# print(SR_test)
# 0         a; b; c; d; e
# 1    aa; bb; cc; dd; ee
# 2    a1; b2; c3; d4; e5

#Convert each row one at a time (not efficient)
tmp = []
for element in SR_test:
    tmp.append([e.strip() for e in element.split("; ")])
DF_split = pd.DataFrame(tmp)
# print(DF_split)
#     0   1   2   3   4
# 0   a   b   c   d   e
# 1  aa  bb  cc  dd  ee
# 2  a1  b2  c3  d4  e5

最佳答案

您可以使用 str.split :

df = SR_test.str.split('; ', expand=True)
print df

    0   1   2   3   4
0   a   b   c   d   e
1  aa  bb  cc  dd  ee
2  a1  b2  c3  d4  e5

另一个更快的解决方案,如果 Series 没有 NaN 值:

print pd.DataFrame([ x.split('; ') for x in SR_test.tolist() ])
    0   1   2   3   4
0   a   b   c   d   e
1  aa  bb  cc  dd  ee
2  a1  b2  c3  d4  e5

时间:

SR_test = pd.concat([SR_test]*1000).reset_index(drop=True)

In [21]: %timeit SR_test.str.split('; ', expand=True)
10 loops, best of 3: 34.5 ms per loop

In [22]: %timeit pd.DataFrame([ x.split('; ') for x in SR_test.tolist() ])
100 loops, best of 3: 9.59 ms per loop

关于python - 通过分隔符将 Pandas Series 拆分为 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224002/

相关文章:

python - 从 mod_wsgi django 应用程序导入 numpy 时偶尔出现 ctypes 错误

python - 不要每次迭代都检查变量

python - Numpy 切片结果与 for 循环不同

python - 将特定文件从 S3 子文件夹导入到 Python 中

python - 如何在列表的间隔之间填充元素

python - 按包含 str 过滤 Pandas 数据帧行

pandas - 按最大值作为索引对数据帧进行切片

r - 数据框的多维数组

python - image_dataset_from_directory 比 flow_from_dataframe 快得多。如何加快速度?

python - 文本数据存储方式不同