首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从单个固定宽度文件中获取列并使用Dask将其放入新CSV文件的最快方法

从单个固定宽度文件中获取列并使用Dask将其放入新CSV文件的最快方法
EN

Stack Overflow用户
提问于 2021-02-10 17:27:36
回答 1查看 74关注 0票数 0

问题

我有一个可变数量的固定宽度文件,其中包含时间序列数据的大量通道。我需要提取用户指定的列并将它们保存到一个新的csv文件中。

固定宽度文件的数据格式

没有标题(列名信息/顺序/索引存储在一个单独的文件中)从2-11列thousands

  • Fixed

  • 第一列开始的

  • 总是包含时间

  • 。通常,行数的顺序是几十个

<

  • >H 111所有数据都是实数<<代码>H 212<编码>H 113所有文件的长度都完全相同&H 214/code>F 215

示例数据

代码语言:javascript
复制
    0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000         0.0000000000000    
   0.20000000000000E-02   -0.78316746164705E-05   -0.55588946130087E-02    0.23977249743147E-02     1.0000000000000       -0.55055077745381E-07     0.0000000000000       -0.33601773744944E-10    0.24453720011883E-01     1.0000000000000       -0.48147397355603E-02
   0.40000000000000E-02   -0.63538465850783E-02   -0.93035113950468E-01    0.35370312419918E-01     1.0000000000000       -0.99610928097310E-02     0.0000000000000        0.39549619607471E-03    0.26770274111205         1.0000000000000       -0.26102761850179E-01
   0.60000000000000E-02   -0.33649747866341E-01   -0.12820456839496        0.15502082128837         1.0000000000000       -0.45260056706573E-01     0.0000000000000        0.23408807718764E-01     1.0563887132504         1.0000000000000       -0.72621886780765E-01

示例操作

档案1:

代码语言:javascript
复制
Time A B C D

档案2:

代码语言:javascript
复制
Time E F G

档案3:

代码语言:javascript
复制
Time H I J K L M

输出:

代码语言:javascript
复制
Time A B J K L

我试过的

我试过使用Pandas、numpy和标准python阅读,但对我的应用程序来说太慢了。使用Dask时,我尝试分别将文件加载到Dask.dataframes中,创建时间列的副本,从每个数据帧中删除所有时间列,然后连接帧并为用户请求的列建立索引。

目标

我希望能够在一秒钟内完成来自25个文件(每个25000行)的100个通道的操作。如果有更好的方法我还没有考虑,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 18:01:27

不确定在一秒钟内是否可行,但我要做的是使用delayed并行处理工作的代码(但速度很慢)。看起来是这样的:

代码语言:javascript
复制
import dask

@dask.delayed
def my_func(filename):
    # your custom code that works, but is slow
    return df

# this is a list of dataframes
[computed_dfs] = dask.compute([my_func(f) for f in list_files])

# concatenate dfs
df_final = pd.concat(computed_dfs)

注意,在您提到的问题中,您只想返回一些列,我将在my_func中实现这个列丢弃/子集逻辑,以减少从工作人员到客户端的数据传输量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66141906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档