【发布时间】:2018-04-26 12:57:30
【问题描述】:
pandas API (IMHO/YMMV) 中似乎存在一个差距,因为无法链接对整个数据帧进行操作的操作(以流畅的方式)。
例如a.op1.op2.op3...
apply 方法接受一个函数和一个轴参数,并将函数相应地应用于行或列。我认为缺少的是一个轴=无,这意味着该函数适用于整个数据帧。这将允许操作,包括结构修改(例如删除行、列、重命名、索引更改等)以如此流畅的样式链接。
有一个技巧可以做到这一点。
如果 a 是一个数据框,那么...
a.groupby(lambda _:0).apply(lambda x:...
... 表示应用的 lambda 中的 x 连续设置为 groupby 的每个组,但只创建了一个组,因此应用于该组的函数有效地成为应用于整个数据帧的函数。然而,这有点笨拙,并且有一个缺点是 有时 groupby 在索引中创建一个新级别(但 有时 没有,这很难预测)。
我是否错过了 API 中的某个方法,或者是否有更简单的方法来实现这一点?
【问题讨论】:
-
查看 applymap 以将函数应用于数据框的每个单元格。
-
@ScottBoston 这不是我真正想要的,有点相反。我希望 lambda 中的 x 成为数据框,而不是它的组成部分。我会尽量让我的问题更清楚。