我有一个数据框df
,行数约300,000,列数很多:
| COL_A | ... | COL_B | COL_C |
-----+--------+-...--+--------+--------+
IDX
-----+--------+-...--+--------+--------+
'AAA'| 'A1' | ... | 'B1' | 0 |
-----+--------+-...--+--------+--------+
'AAB'| 'A1' | ... | 'B2' | 2 |
-----+--------+-...--+--------+--------+
'AAC'| 'A1' | ... | 'B3' | 1 |
-----+--------+-...--+--------+--------+
'AAD'| 'A2' | ... | 'B3' | 0 |
-----+--------+-...--+--------+--------+
我需要在COL_A
之后进行分组,并且从每个组的每一行开始,我需要IDX
(eG:' AAA')和COL_B
(eG)的值:B1
)按COL_C
对于A1我需要:[['AAA','B1'], ['AAC','B3'], ['AAB','B2']]
这就是我的工作。
grouped_by_A = self.df.groupby(COL_A)
for col_A, group in grouped_by_A:
group = group.sort_values(by=[COL_C], ascending=True)
...
它工作正常,但它非常慢(Core i7,16 GB RAM)。当我没有对这些值做任何事情时,已经需要大约5分钟。你知道更快的方式吗?