使用 groupby 创建新数据框

新手上路,请多包涵

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

如何从 pandas 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:语法无效

原文由 Rebecca Ijekah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 415
1 个回答

让你的 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')

原文由 Kay Wittig 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题