【发布时间】:2020-03-24 04:51:34
【问题描述】:
假设我在一个大的 hdf5 文件中有这个数据帧
A B C
0 103896 1 2.0
1 103896 1 0.0
2 103896 1 5.0
3 103896 2 0.0
4 103896 2 7.0
5 103896 2 0
6 103896 2 0.0
7 103897 1 7.0
8 103897 1 0
根据前两列,我想创建一个像这样的最终列表:
[[2.0, 0.0, 5.0], [0.0, 7.0, 0, 0.0], [7.0, 0]]
为了做到这一点,我想到的唯一方法是:
df = df.groupby(['A', 'B'])['C'].apply(list)
然后迭代 df 或只是转换:
final_list = df['C']
考虑到我的数据集很大,是否有其他方法在 groupby 之后不返回新数据帧?
使用 dask 执行此操作对计算机内存来说非常昂贵,因为不是真正的减少:
df = df.groupby(['A', 'B'])['C'].apply(list, meta=(float)).compute()
【问题讨论】: