您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

dtype对象上的累积操作

dtype对象上的累积操作

事实证明这是无法完成的。

继续相同的示例:

def burndowntheworld(ser):
    print('Are you sure?')
    return ser/0

df.select_dtypes(['object']).expanding().apply(burndowntheworld)
Out: 
    C2 C3   C4
0  {A}  A  [A]
1  {B}  B  [B]
2  {C}  C  [C]
3  {D}  D  [D]

如果列的类型是对象,则永远不会调用函数。熊猫没有其他适用于对象的替代品。相同rolling().apply()

从某种意义上说,这是一件好事,因为expanding.apply使用自定义函数具有O(n ** 2)复杂度。对于诸如等的特殊情况cumsumewma操作的递归性质可以将线性时间的复杂度降低,但是在最一般的情况下,它应该为前n个元素,然后为前n + 1个元素计算函数,依此类推。因此,特别是对于仅依赖于当前值和函数先前值的函数,扩展效率很低。更不用说将列表或集合存储在DataFrame中从来不是一个好主意。

因此答案是:如果您的数据不是数字,并且函数取决于先前的结果和当前元素,则只需使用for循环即可。无论如何,它将更有效率。

其他 2022/1/1 18:29:32 有454人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶