我正在尝试拆开数据框。它工作正常,但问题是我正在处理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
方法中的read_csv()
读取上面的巨大数据集,然后将数据集连接为一个完整的数据帧。
虽然拆栈需要花费很多时间(尽管从csv读取数据也很耗时,但是应用chunksize
和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亿个)的数据帧并对其进行堆栈处理时,可能要花费很长时间才能处理或出现内存错误, 因此,有任何选项可以按块进行拆栈操作以获得所需的结果。