假设使用以下命令将五个文件导入到 DASKcsv_read
。为此,我使用以下代码:
import dask.dataframe as dd
data = dd.read_csv(final_file_list_msg, header = None)
每个文件有十列。我想将 1 添加到文件 1 的第一列,将 2 添加到文件 2 的第一列,将 3 添加到文件 3 的第一列,依此类推。
假设您有几个遵循此方案的文件:
dummy/
├── file01.csv
├── file02.csv
├── file03.csv
首先我们通过以下方式创建它们
import os
import pandas as pd
import numpy as np
import dask.dataframe as dd
from dask import delayed
fldr = "dummy"
if not os.path.exists(fldr):
os.mkdir(fldr)
for i in range(10):
df = pd.DataFrame(np.random.rand(5,3))
df.to_csv("{}/file{:02}.csv".format(fldr,i+1),
index=False)
创建的文件列表是fns = sorted(os.listdir(fldr))
然后我们编写一个给出路径的函数fn
:
- 读取文件
- 取数字XX
fileXX.csv
- insert
int(XX)
在第一列
That is
def addCol(fn):
df = pd.read_csv(os.path.join(fldr, fn))
first = int(fn.split(".")[0][-2:])
df.insert(0, "first", first)
return df
我们希望这种乐趣成为delayed
我们可以使用装饰器来实现@delayed
或将函数包装为delayed
。因此,为了获得所需的输出,我们应该(相应地)触发
ddf = dd.from_delayed([addCol(fn) for fn in fns])
ddf = dd.from_delayed([delayed(addCol)(fn) for fn in fns])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)