我有要组合的数据帧字典。理想情况下,我会凭内存这样做:
values = ['A','B','C']
dats = [dataset[x] for x in values] # get list of dataframes from the dictionary of dataframes "dataset" (causes kernel crash)
dataset_df = pd.concat(dats, sort=False, join='outer', ignore_index=True) # concat datasets
但是,这会导致内核崩溃,因此我必须首先对字典进行 pickle,然后逐一检索数据帧,这确实是一个性能消耗:
dats = [get_dataset(x) for x in values] # get_dataset() retrieves one dataframe from disk
dataset_df = pd.concat(dats, sort=False, join='outer', ignore_index=True) # concat datasets
合并的数据集与单独的数据集一起存储在内存中。我后来通过将其添加到数据帧字典中来确认这一点。 那么为什么内核会崩溃呢?
将字典中的数据帧放入列表中是否会导致内存使用过多?
最佳答案
您可以将生成器表达式传递给 concat,如下所示:
dats = (dataset[x] for x in values)
关于python - 连接来自 pickle 的 pandas 数据帧与来自内存字典的 pandas 数据帧 - 为什么内存中会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59175051/