我正在尝试准备一些熊猫数据帧,以输出到(非表格格式)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方法是否有更快的方法来实现相同的输出?
编辑:字符串转换是瓶颈。有什么方法可以利用在使用DataFrame.to_csv
时发生的基于C的字符串转换吗?
答案 0 :(得分:0)
似乎需要更多时间的部分是将浮点数转换为字符串。然后,我的操作方式如下:
demo_input = demo_input.astype(str)
sep = " "
concatenation = ""
for column in demo_input.columns: # This works fast
concatenation += demo_input[column] + sep