我正在尝试处理一个相当大的数据集,该数据集在一次加载时不适合使用 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/