【问题标题】:pandas: get all groupby values in an array [duplicate]pandas:获取数组中的所有groupby值[重复]
【发布时间】:2019-08-03 04:09:36
【问题描述】:

我确定以前有人问过这个问题,如果重复,抱歉。假设我有以下数据框:

df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'data': range(6)}, columns=['key', 'data'])

>>
    key data
0   A   0
1   B   1
2   C   2
3   A   3
4   B   4
5   C   5

在'key'上做一个groupby,df.groupby('key').sum()我知道我们可以做这样的事情:

>> 
    data
key 
A   3
B   5
C   7

获取数组中所有“拆分”数据的最简单方法是什么?:

>> 
    data
key 
A   [0, 3]
B   [1, 4]
C   [2, 5]

我不一定只按一个键进行分组,还可以使用其他几个索引(例如“年”和“月”),这就是为什么我想使用 groupby 函数,但保留所有分组的原因数组中的值。

【问题讨论】:

    标签: pandas pandas-groupby split-apply-combine


    【解决方案1】:

    你可以使用apply(list):

    print(df.groupby('key').data.apply(list).reset_index())
    
      key    data
    0   A  [0, 3]
    1   B  [1, 4]
    2   C  [2, 5]
    

    【讨论】:

    • 对于数组而不是列表,您可以使用df.groupby('key').data.apply(np.array),这对我的操作更方便。
    • 什么是多列并希望将多列中的所有值聚合到一个列表中?
    • @Moondra df.groupby("Column Name").agg(list) 应该有帮助.. 另一种方法是数据透视表(虽然不是必需的)df.pivot_table(index="Column Name",aggfunc=list)
    • 这对我有用,因为我需要不同的列表/数组项:df.groupby('key').data.unique().reset_index()
    • 这会保留结果列表中的itens顺序吗?
    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 2020-03-09
    • 2020-05-05
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2020-11-11
    • 2015-10-17
    相关资源
    最近更新 更多