我对熊猫还很陌生,所以我希望这将是一个简单的答案(我也感谢所有指向数据框设置的指针)
假设我有以下DataFrame:
D = pd.DataFrame({ i:{ "name":str(i),
"vector": np.arange(i,i+10),
"sq":i**2,
"gp":i%3 } for i in range(10) }).T
gp name sq vector
0 0 0 0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 1 1 1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2 2 2 4 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
3 0 3 9 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
4 1 4 16 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
5 2 5 25 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
6 0 6 36 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
7 1 7 49 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
8 2 8 64 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
9 0 9 81 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
现在,我想按“ gp”分组并获取“ vector”的均值
我试过了
D.groupby('gp').mean()
乃至
D.groupby('gp').agg( np.mean )
但我收到一个错误,没有要聚合的“数字类型”。那么np.arrays在熊猫中不起作用吗?
对我来说,它有效:
D.groupby('gp').apply(lambda x: x.vector.mean().mean())
我取两次平均值,因为您想要向量均值的均值组值(不是吗?)。
Out[98]:
gp
0 9.0
1 8.5
2 9.5
dtype: float64
如果要使用均值向量,则只需取一次均值。
问题内容: 在将其标记为重复之前,让我向您解释,我已经阅读了此页面以及许多其他内容,但仍然没有找到解决问题的方法。 这就是我遇到的问题:给定两个2D数组,我想在两个数组上应用函数F。F将两个一维数组作为输入。 请注意,这仅用于演示。这里真正的问题是在两组一维数组上工作的泛型函数F。 向量化要么完全失败,要么出错,或者应用逐个元素的功能,而不是逐个数组(或逐行) 迭代地应用功能;例如,使用上面所定义
我有以下函数(一个以列作为输入的热编码函数)。我基本上想把它应用到我的数据框中的一列,但似乎不明白出了什么问题。 猜我怎么称呼它有问题?
我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的
怎么办? **添加详细示例如下***
问题内容: 我是python(programming)的新手,我发现下面的递归程序很难遵循。在调试程序时,我发现每次递归时都会经历递归并且递减值-1。在某一点是-1,编译器移至该部分并返回0。 最终该值变为1,这是怎么发生的? 并输出: 递归示例结果 1 3 6 10 15 21 问题答案: 尝试用铅笔和纸追踪该功能。在这种情况下,该函数的打印语句可能会引起误解。 考虑一下程序的这一部分, 从这里
并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?