首页 > 解决方案 > 使用 groupby 创建新的数据框

问题描述

我读了这篇文章(如何从熊猫 groupby 对象创建多个数据框)但是,在我使用 groupby 创建 grouped_persons 组后,我仍然不明白如何为每个人创建我的数据框。

如何从熊猫 groupby 对象创建多个数据框

我应该在这段代码中改变什么?我认为这是我的问题的一部分:'df_'+ name +'1'

grouped_persons = df.groupby('Person')
for name, group in grouped_persons
    'df_'+ name +'1' = df.loc[(df.Person == name) & (df.ExpNum == 1)]

文件“”,名称的第 2 行,grouped_persons 中的组 ^ SyntaxError: invalid syntax

标签: pythonpython-3.xloopsdataframepandas-groupby

解决方案


让你的 DataFrame 看起来像这样

df = pd.DataFrame([['Tim', 1, 2],
                   ['Tim', 0, 2],
                   ['Claes', 1, 3],
                   ['Claes', 0, 1],
                   ['Emma', 1, 1],
                   ['Emma', 1, 2]], columns=['Person', 'ExpNum', 'Data'])

给予

>>> df
  Person  ExpNum  Data
0    Tim       1     2
1    Tim       0     2
2  Claes       1     3
3  Claes       0     1
4   Emma       1     1
5   Emma       1     2

然后您将直接从 pandas groupby 对象获取组数据帧

grouped_persons = df.groupby('Person')

经过

>>> grouped_persons.get_group('Emma')
  Person  ExpNum  Data
4   Emma       1     1
5   Emma       1     2

并且没有必要单独存储它们。

注意:使用的 Pandas 版本是,'0.23.1'但此功能可能在某些早期版本中也可用。

编辑:如果您只对那些条目感兴趣ExpNum == 1,我建议在 groupby 之前应用它,例如

grouped_persons_1 = df[df['ExpNum'] == 1].groupby('Person')

推荐阅读