基于唯一 ID 遍历 pandas 数据框

Traversing a pandas dataframe based on unique ids

假设我有这个数据框:

df = pd.DataFrame(
    [[1,2.2,3.1],[1,1.5,4.2],[1,3.6,7.0],
     [2,1.9,9.8],[2,3.0,7.1],
     [3,1.1,2.2],[3,4.4,5.6],[3,2.1,1.2]],
     columns=['id', 'A', 'B'])

df
    id   A      B
0   1   2.2     3.1
1   1   1.5     4.2
2   1   3.6     7.0
3   2   1.9     9.8
4   2   3.0     7.1
5   3   1.1     2.2
6   3   4.4     5.6
7   3   2.1     1.2

然后我需要一种方法来横穿这个数据框,通过唯一 id.

对行集合执行一些汇总计算

类似于:

df1, df2, df3 = df.groupby('id')

但这样做是不可能的,因为:

  1. 有超过 1000 个独特的 ids,
  2. 上面的return值是一个元组,需要一个dataframe。

预计:

df1
    id   A      B
0   1   2.2     3.1
1   1   1.5     4.2
2   1   3.6     7.0

df2
   id    A       B
3   2   1.9     9.8
4   2   3.0     7.1

df3
    id   A      B
5   3   1.1     2.2
6   3   4.4     5.6
7   3   2.1     1.2

我该怎么做?

您可以尝试 dataframe.groupbyexec

df = [x for _, x in df.groupby('id')]

for i in range(len(df)):
    exec(f'df{i} = df[i].reset_index(drop=True)')

输出

df0
   id   A    B
0   1   2.2  3.1
1   1   1.5  4.2
2   1   3.6  7.0
df1
    id  A    B
0   2   1.9  9.8
1   2   3.0  7.1
df2
    id  A    B
0   3   1.1  2.2
1   3   4.4  5.6
2   3   2.1  1.2