【发布时间】:2020-12-22 16:56:27
【问题描述】:
我正在处理一个相当大的 DataFrame,并希望加快速度。我的数据格式如下:
| Name | Number |
|---|---|
| Condition 1 | 1 |
| Condition 1 | 2 |
| Condition 1 | 2.2 |
| Condition 1 | 2 |
| Condition 2 | 1 |
| Condition 2 | 1.1 |
| Condition 2 | 1.2 |
| Condition 2 | 1.3 |
现在我想对数字应用滚动平均值,但不混合不同的条件。我的预期结果是:
| Name | Number | Mean |
|---|---|---|
| Condition 1 | 1 | nan |
| Condition 1 | 2 | 1.5 |
| Condition 1 | 2.2 | 2.1 |
| Condition 1 | 2 | 2.1 |
| Condition 2 | 1 | nan |
| Condition 2 | 1.1 | 1.05 |
| Condition 2 | 1.2 | 1.15 |
| Condition 2 | 1.3 | 1.25 |
我现在正在做的是遍历所有条件并将计算的平均值保存在不同的 Dataframe 中,例如:
mean = {}
for con in data["Name"].drop_duplicates():
mean[con] = data[data["Name" == con]].rolling(window=2).mean()
但这总是需要几分钟,这就是为什么我正在寻找一种替代方法来直接创建列。我用 .apply 试过了,但这不起作用。至少到目前为止我尝试过的不是。
非常感谢!
【问题讨论】:
标签: python python-3.x pandas