我正在尝试拆开数据框。它工作正常,但问题是我正在处理 CSV 文件中的巨大数据集(约 10 亿)。
这是示例数据集。
236539~!#48512569874~!#Name~!#Danny
236539~!#48512569874~!#Class~!#12
236539~!#48512569874~!#Building~!#X4
236539~!#48512569875~!#Name~!#John
236539~!#48512569875~!#Class~!#10
236539~!#48512569875~!#Shelf~!#Yes
236539~!#48512569875~!#Desk_ID~!#2018_5D
236539~!#48512569876~!#Name~!#Xian
236539~!#48512569876~!#Desk_ID~!#2018_3D
236539~!#48512569876~!#Country~!#CHN
我正在使用以下方法读取上述庞大数据集chunksize
in read_csv()
方法,然后将数据集连接成完整的数据帧。
虽然拆垛需要花费很多时间(虽然从 csv 读取数据也花费时间,但应用chunksize
and pd.concat
提高性能)
以下是我用于取消堆叠的代码:
df = pd.read_csv('panda1.csv', delimiter='~!#', engine='python',header=None, keep_default_na=False, na_values=[''])
df.columns = ['School_Id', 'Student_Id', 'Attribute_Name', 'Attribute_Value']
var_list = ['Name','Class','Building','Shelf','Desk_ID','Country']
df = df.set_index(['School_Id', 'Student_Id', 'Attribute_Name'])['Attribute_Value'].unstack(fill_value='').fillna('')[var_list].reset_index()
拆开后,它正是我想要的。
School_Id Student_Id Name Class Building Shelf Desk_ID Country
236539 48512569874 Danny 12 X4 '' '' ''
236539 48512569875 John 10 Yes 2018_5D ''
236539 48512569876 Xian '' '' '' 2018_3D CHN
但是,当我尝试创建一个包含大型数据集(约 10 亿)的数据框并将其拆开时,要么需要很长时间来处理,要么存在内存错误,
那么是否有任何选项可以按块进行拆栈操作以获得所需的结果。