首页 > 解决方案 > Pandas 中的逐行字符串连接

问题描述

我正在尝试准备一些 Pandas Dataframes 以输出到(非表格)ascii 文件。作为此过程的一部分,我希望将包含数字数据的某些数据帧的每一行连接到 Pandas 系列的制表符分隔字符串中。

目前,我的代码是这样的:

import pandas as pd
import numpy as np

demo_input = pd.DataFrame(np.random.random((1000000, 10)))

sconcat = lambda a: ['    '.join(map(str, r)) for r in a]

demo_output = pd.Series(sconcat(demo_input.values))

对于大量输入,这被证明是非常缓慢的,尤其是与其他 Pandas 进程的运行速度相比。有没有更快的方法来使用内置的 Pandas 方法实现相同的输出?

编辑:这是瓶颈的字符串转换。有没有办法利用使用时发生的基于 C 的字符串转换DataFrame.to_csv

标签: pythonpandas

解决方案


似乎需要更多时间的部分是将浮点数转换为字符串。之后,我会这样做的方式如下:

demo_input = demo_input.astype(str)
sep = "    "
concatenation = ""
for column in demo_input.columns: # This works fast
    concatenation += demo_input[column] + sep

推荐阅读