You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame每行处理后折叠为带有序新列的单行(内存友好)

问题:超大型DataFrame的内存高效处理方案

我有一个1600万行、24列的大型DataFrame,需要对每行执行以下操作:

  • 将该行转置为24行
  • 与另一个DataFrame(df2)合并
  • 将合并后的24行折叠为带有原行索引的单行
  • 最终将所有处理后的行重新组合为新DataFrame,用于Kmeans聚类

我不介意操作耗时,但非常担心出现内存错误。

现有数据结构

df(含因子化值)

0   1   2   3
index                                                                                   
0       1   2   3   4    
1       1   2   3   5
...

df2(因子化值对应的数据集)

factor  0   1   2   3   4    
1       0.0 1.0 2.0 3.0 NaN
2       5.0 6.0 7.0 8.0 NaN
3       10.0 11.0 12.0 13.0 14.0
4       15.0 16.0 17.0 18.0 19.0
5       20.0 21.0 22.0 23.0 24.0
...

当前尝试的代码

我已通过groupby按索引拆分每行:

spatial_row = df.groupby('index')

并通过循环将每个分组与df2合并:

for a in spatial_row:
    df = a[1].T.rename(columns=({df.columns[0]: 'factor'}))
    df_index = a[0]
    df.merge(df2, on='factor')
    df.drop('factor', axis=1, inplace=True)

中间结果与目标格式

处理后的中间数据结构(以index==1为例,实际为24行444列)

0   1   2   3   4
0   0.0 1.0 2.0 3.0 NaN
1   5.0 6.0 7.0 8.0 NaN
2   10.0 11.0 12.0 13.0 14.0
3   20.0 21.0 22.0 23.0 24.0

折叠后的目标单行格式(每行含10656=444×24列)

0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19
1     0.0 1.0 2.0 3.0 NaN 5.0 6.0 7.0 8.0 NaN 10.0 11.0 12.0 13.0 14.0 20.0 21.0 22.0 23.0 24.0

最终需要将处理后的单行以dict/series/list形式按原索引保存,组合成新的1600万行DataFrame。目前未找到内存高效的实现方式,向量化操作过于繁重,寻求可行方案。

内容的提问来源于stack exchange,提问作者Lev Zhitnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:41:31