【问题标题】:Traversing a pandas dataframe based on unique ids [duplicate]基于唯一ID遍历熊猫数据框[重复]
【发布时间】:2021-08-12 22:23:55
【问题描述】:

假设我有这个数据框:

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. 上面的返回值将是一个元组,并且需要一个数据框。

预期结果:

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

我该怎么做?

【问题讨论】:

    标签: python python-3.x pandas dataframe slice


    【解决方案1】:

    你可以试试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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-20
      • 2019-01-15
      • 2021-11-09
      • 2019-05-09
      • 1970-01-01
      • 2020-10-01
      • 2017-06-08
      相关资源
      最近更新 更多