我有一个 numpy.array arr
和一个 pandas.DataFrame df
。
arr
和 df
具有相同的形状 (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
我想按 A
对 df
进行分组并计算平均值,但我想要 arr
来代替转换 df
> 进行改造。
所以我得到类似的东西:
arr =
0 1 12 3
(2+3)/2 (5+19)/2 (45+11)/2 (47+111)/2
这可能吗?没有昂贵的循环?
提前致谢
最佳答案
看起来需要首先从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. ]]
关于python - 基于具有相同长度的 pandas.DataFrame 的 groupby 的 numpy.array 进行 Groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830134/