Pandas 将多个CSV转换为单分区拼花地板数据集
我有一组CSV文件,每个文件对应一年的数据,每个文件中都有Pandas 将多个CSV转换为单分区拼花地板数据集,pandas,parquet,fastparquet,Pandas,Parquet,Fastparquet,我有一组CSV文件,每个文件对应一年的数据,每个文件中都有year列。我想将它们转换成单个拼花地板数据集,按年份进行分区,以便以后在熊猫中使用。问题是,所有年份组合在一起的数据帧太大,无法放入内存中。是否可以逐个迭代地编写拼花地板分区 我正在使用fastparquet作为引擎 简化的代码示例。这段代码会增加内存使用并导致崩溃 df=[] 对于范围内的年份(2000年、2020年): 追加(pd.read_csv(f'{year}.csv')) df=局部固结(df) df.to_拼花地板('al
year
列。我想将它们转换成单个拼花地板数据集,按年份进行分区,以便以后在熊猫中使用。问题是,所有年份组合在一起的数据帧太大,无法放入内存中。是否可以逐个迭代地编写拼花地板分区
我正在使用fastparquet
作为引擎
简化的代码示例。这段代码会增加内存使用并导致崩溃
df=[]
对于范围内的年份(2000年、2020年):
追加(pd.read_csv(f'{year}.csv'))
df=局部固结(df)
df.to_拼花地板('all_YEAR.pq',partition_cols=['YEAR']))
我试着一年一年地写,就像这样
适用于范围内的年份(2000年、2020年):
df=pd.read_csv(f'{year}.csv')
df.to_拼花地板('all_YEAR.pq',partition_cols=['YEAR']))
数据文件都在各自的
YEAR=XXXX
目录中,但是当我试图读取这样的数据集时,我只得到了去年的数据。也许在编写单独的分区后可以修复拼花地板元数据?我想我找到了一种使用fastparquet.writer.merge()函数的方法。拼花地板文件每年一个接一个地写入,省去年份列并给它们适当的名称,然后merge()
函数创建顶级元数据文件
下面的代码是一个要点,因为我在具体的用例中省略了许多细节
years=范围(2000年、2020年)
年份:
df=pd.read_csv(f'{year}.csv').drop(columns=['year']))
df.to_拼花地板(f'all_years.pq/YEAR={YEAR})
fastparquet.writer.merge([f'all_years.pq/YEAR={y}表示y年])
df_all=pd.read_拼花地板('all_years.pq'))