python - pandas 窗口函数中是否有 FIRST_VALUE 的模拟?
问题描述
我正在尝试在大型 DataFrame(几 GB)上计算窗口函数。简化示例:
data_df.groupby('item_id').rolling(window='15min', on='time').agg({"item_count": 'first', "is_locked": "max"})
item_id - int64 time - datetime64 is_locked - boolean
我需要在列中获取窗口的第一个值, item_count
但出现错误:
AttributeError: 'first' is not a valid function for 'RollingGroupby' object
但是对于group by
这个功能是存在的。我知道我可以放一个 lambda,但由于它不是矢量化操作,性能非常低。有没有办法放置first
函数RollingGroupby?
解决方案
一种想法是使用自定义 lambda 函数:
{"item_count": lambda x: x.iat[0], "is_locked": "max"}
推荐阅读
- r - Lubridate 函数将字符串转换为日期。示例字符串:“2020 年 4 月 21 日”或“2020 年 4 月 21 日”
- python - Pandas 将重复项放在一列上,只保留另一列中具有最频繁值的行
- kubernetes - 具有 AuthorizationPolicy 和 RequestAuthentication 的 Istio 服务网格安全性
- javascript - 使用 sequelize 启动 postgres 服务器时连接 ECONNREFUSED
- google-coral - Google Coral:隐藏内核启动消息
- flutter - 升级到flutter 1.2后构建失败
- android - android:ListActivity:setSelection:改变颜色
- python - 从内部线程清除 ipywidget 输出
- javascript - 错误:EPERM:运行 puppeteer JavaScript 节点时不允许操作
- javascript - 如何在 antd AutoComplete 组件中禁用 Chrome 自动填充