Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么Dask to_csv会将文件保存在部件中? 上下文序言:_Python_Pandas_Csv_Dask - Fatal编程技术网

Python 为什么Dask to_csv会将文件保存在部件中? 上下文序言:

Python 为什么Dask to_csv会将文件保存在部件中? 上下文序言:,python,pandas,csv,dask,Python,Pandas,Csv,Dask,我有一个示例csv文件,它的列数比行数多(~300对190),在处理整个8000万条记录之前,我试图了解它是如何工作的。 我正在做一个谷歌colab笔记本 我想做的是: 读取CSV文件,对所有列执行值_counts(),并保存结果 这是代码,我保留原样: 导入dask.dataframe作为dd 作为pd进口熊猫 #这里我们正在阅读csv dfd=dd.read\u csv( 'drive/MyDrive/csvs/sample.csv', 分隔符=';', #下面我们指定第一列的类型 数据类型

我有一个示例csv文件,它的列数比行数多(~300对190),在处理整个8000万条记录之前,我试图了解它是如何工作的。 我正在做一个谷歌colab笔记本

我想做的是: 读取CSV文件,对所有列执行值_counts(),并保存结果

这是代码,我保留原样:

导入dask.dataframe作为dd
作为pd进口熊猫
#这里我们正在阅读csv
dfd=dd.read\u csv(
'drive/MyDrive/csvs/sample.csv',
分隔符=';',
#下面我们指定第一列的类型
数据类型={'ID':对象,'BSID':'UInt32','CAM':'UInt32',
‘AGZ’:‘UInt32’、‘Zen’:‘UInt16’、‘taw’:‘UInt16’
},
块大小=64000000#=64 Mb块
)
#这里我们将~300列的其余部分转换为UInt8
cols=[i表示dfd列中的i,如果i不在['ID'、'BSID'、'CAM'中,
“AGZ”、“Zen”、“taw”]]
对于col中的col:
dfd[col]=dfd[col].astype('UInt8')
#价值计量
对于dfd列中的列:
结果=dfd[col]。值_计数()
结果.to_csv('drive/MyDrive/csvs/Value_计数-'+col+'.csv'))
出了什么问题: 执行代码时,结果将作为名为0.part的文件存储在文件夹中,这些文件夹按照
Value\u counts-'+col+'.csv
schema命名。我希望它保存为
csvs
文件夹中的
Value\u counts-'+col+'.csv
文件

为什么会这样

附加问题:

是否可以更好地为所有列运行value_counts()

单个文件:bool,默认为False

是否将所有内容保存到单个CSV文件中。在单人床下 在文件模式下,每个分区都附加在指定CSV的末尾 文件

在您的例子中,每个输出只有一个分区(part.0)——但是Dask不知道您不需要从多个块并行写入,所以您需要帮助它


有更好的办法吗?听起来,您的列比分区多,所以您可以执行
dfd.map\u分区(pd.DataFrame.value\u counts)
sum
这些部分。

谢谢!我不知道我怎么会错过,即使我打开了“文档”选项卡。在这个示例中,我只有比分区更多的列。