python - 从 CSV 读取数据时,如何在 Dask 中添加索引列?

标签 python pandas dataframe indexing dask

我正在尝试处理一个相当大的数据集,该数据集在一次加载时不适合使用 Pandas 装入内存,因此我使用 Dask。但是,在使用 read_csv 方法读取数据后,我很难向数据集添加唯一的 ID 列。我不断收到错误(请参阅代码)。我正在尝试创建一个索引列,以便可以将该新列设置为数据的索引,但错误似乎告诉我在创建列之前先设置索引。

代码

df = dd.read_csv(r'path\to\file\file.csv')  # File does not have a unique ID column, so I have to create one.
df['index_col'] = dd.from_array(np.arange(len(pc_df)))  # Trying to add an index column and fill it
# ValueError: Not all divisions are known, can't align partitions. Please use `set_index` to set the index.

更新

使用 range(1, len(df) + 1 将错误更改为:TypeError:列赋值不支持类型范围

最佳答案

是的,如果不通读 CSV 文件,很难知道每个 block 的行数,因此很难生成像 0, 1, 2, 3, ... 这样的索引如果数据集跨越多个分区。

一种方法是创建一列:

df["idx"] = 1

然后调用 cumsum

df["idx"] = df["idx"].cumsum()

但请注意,这确实向支持数据帧的任务图添加了一堆依赖项,因此某些操作可能不像以前那样并行。

关于python - 从 CSV 读取数据时,如何在 Dask 中添加索引列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58525020/

相关文章:

python - 按列级别/轴 1 多索引选择 Pandas 数据

python - 数据帧单元格被锁定并用于运行余额计算,条件是同一行上另一个单元格的结果

python - 从单个 FTP 服务器进行多线程/异步下载

python - 如何在我的 python 代码中使用修改后的 openssl 库(用 C 编写)?

python - 在 Pandas 中添加两列时输出错误

python - matplotlib - 在 y 轴上为每组创建 x 轴上的条形图

python - 根据单元格值重命名数据框列

python - 当有多个规范时,在 Pandas 中优化计算的最佳做法是什么?

python - 基于其他数据帧的数据帧的条件填充

python - python函数 `datetime.now()` 和 `datetime.today()` 有什么区别?