当前位置: 首页 > 面试题库 >

Pandas:groupby列出

鄂曦之
2023-03-14
问题内容

我有如下数据:

id  value   time

1   5   2000
1   6   2000
1   7   2000
1   5   2001
2   3   2000
2   3   2001
2   4   2005
2   5   2005
3   3   2000
3   6   2005

我的最终目标是将数据包含在以下列表中:

[[5,6,7],[5]] (this is for id 1 grouped by the id and year)
[[3],[3],[4,5]] (this is for id 2 grouped by the id and year)
[[3],[6]] (same logic as above)

我已使用将数据分组df.groupby(['id', 'year'])。但是之后,我将无法访问组并以上述格式获取数据。


问题答案:

您可以使用apply(list)

>>> df.groupby(['id', 'time'])['value'].apply(list)

id  time
1   2000    [5, 6, 7]
    2001          [5]
2   2000          [3]
    2001          [3]
    2005       [4, 5]
3   2000          [3]
    2005          [6]
Name: value, dtype: object

如果您确实希望使用与您显示的格式完全相同的格式,则可以对它进行分组idlist 再次 应用,但这并不高效,并且可以说该格式更难使用…

>>> df.groupby(['id','time'])['value'].apply(list).groupby('id').apply(list).tolist()
[[[5, 6, 7], [5]], [[3], [3], [4, 5]], [[3], [6]]]


 类似资料:
  • 我有一个字符串数组列表,内容如下: 我只需要输出从ID到下一个ID。 例如: 如何在不指定确切位置的情况下访问它。我想到了,直到下一个,我只是不知道如何实现它。 非常感谢你的帮助

  • 问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:

  • ls(list)可以列出目录里的内容。 直接使用 ls: ls 返回的是当前目录里的东西。 ls 后面加上路径: ls ~ 返回的是指定位置下的东西。类似这样: Applications Movies Desktop Music Documents Pictures 所有 在 macOS / Linux 系统上,用点开

  • 问题内容: 原始列表将转换为正常。为什么原始列表的列表不能转换为的列表? 背景故事 (以减轻xy问题): 我正在使用return的API 。我碰巧知道它一直都是。我计划循环并构建自己的循环,但是我在尝试编写时试图修复(但不禁止)原始类型编译器警告。 我试过了: 但是这些会导致类型不匹配错误。 有趣的是,这没有给出警告或错误: 问题答案: // #1 (does compile) List raw

  • 下面是我的代码...Javascript和JQuery位于头部,但CSS是一个外部文档。 有一个带有cookie的额外代码段存储了一个名称...忽略它... 它的YouTube API拉我最近的上传。所有的工作都很好,除了我最后有一个15的视频播放列表在一个单一的列,我还没能弄清楚如何让它排序成任何一种网格排列(5x3或什么)。播放列表中加载的视频数量可以调整为5x3,4x3,无论x什么都可以工作