python - 使用 csv 读取将值添加到 DASK 数据帧导入的列

标签 python csv dataframe dask

假设使用 csv_read 将五个文件导入到 DASK。为此,我使用以下代码:

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 :

  • 读取文件
  • fileXX.csv 中的数字 XX
  • 插入int(XX)在第一列

那就是

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])

关于python - 使用 csv 读取将值添加到 DASK 数据帧导入的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54872997/

相关文章:

python - 用 Pandas 自动增量MySQL列

mysql - 从 CSV 到 MySQL 的特殊字符不起作用?

html - 如何使用 native powershell 命令从 html 文件中提取特定表格?

python - 获取另一列中每个唯一值的前 2 个值

python - pandas 从数据帧中删除每个字段具有非空值的行(Python 3.4/IPython)

python - 将 flask 脚本与模板过滤器一起使用

python - 识别因果模型的影响时的错误

python - 如何计算 Cassandra 中特定列族的行键数(阅读详情)

Python 列表写入没有方括号的 CSV

python - 获取 Pandas 的月平均值