【问题标题】:Groupby an numpy.array based on groupby of a pandas.DataFrame with the same lengthGroupby 一个基于相同长度的 pandas.DataFrame 的 groupby 的 numpy.array
【发布时间】:2016-12-14 06:48:11
【问题描述】:

我有一个 numpy.array arr 和一个 pandas.DataFrame df

arrdf 具有相同的形状 (x,y)

我需要按df 的一列分组,并在具有相同形状的arr 上应用受影响行的转换。

为了清楚起见,这是一个玩具示例:

arr = 
   0  1   12   3
   2  5   45   47
   3  19  11  111

df =
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  4  9  10  11

我想将dfA 分组并计算平均值,但不是转换df 我希望转换arr

所以我得到类似的东西:

    arr = 
        0        1         12          3
       (2+3)/2  (5+19)/2   (45+11)/2   (47+111)/2

这可能吗?没有昂贵的循环?

提前致谢

【问题讨论】:

    标签: python arrays pandas numpy dataframe


    【解决方案1】:

    看起来需要首先从arr 创建DataFrame,然后按列groupby 创建A 并聚合mean。最后由values 将其转换为numpy array

    print (pd.DataFrame(arr).groupby(df.A).mean().values)
    [[  0.    1.   12.    3. ]
     [  2.5  12.   28.   79. ]]
    

    【讨论】:

    • 这正是我想要的,但是如果我想按多列分组呢?
    • 如果需要多列,试试(pd.DataFrame(arr).groupby([df.A, df.B]).mean().values)
    • 太棒了! +1
    • 谢谢!因为我是 groupby() 方法的新手,所以我在这里问了另一个问题:stackoverflow.com/questions/38849639/… 有什么帮助吗?再次感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2022-12-06
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多