如何在Julia`DataFrame`中使用重复的时间戳折叠数据

时间:2017-05-03 09:44:54

标签: julia

我有一个DataFrame对象,如下所示:

| Row | timestamp           | price | volume |
|-----|---------------------|-------|--------|
| 1   | 2011-08-14T14:14:40 | 10.40 | 0.779  |
| 2   | 2011-08-14T15:15:17 | 10.40 | 0.101  |
| 3   | 2011-08-14T15:15:17 | 10.40 | 0.316  |
| ... | ................... | ..... | .....  |

timestamps是非唯一的,因此在解决此问题之前我无法转换为TimeArray。如何折叠重复的timestamps,取价格的平均值和总和?

感谢您的任何指示!

1 个答案:

答案 0 :(得分:3)

您可以使用by

df = DataFrame(
  cat = ["a", "b", "c","a"],
  prices = [1,2,3,4],
  vol    = [10,20,30,40],
)

df2 = by(df, :cat) do sub
      t = DataFrame(prices=mean(sub[:prices]), vol=sum(sub[:vol]))
end

df2

3×3 DataFrames.DataFrame
│ Row │ cat │ prices │ vol │
├─────┼─────┼────────┼─────┤
│ 1   │ "a" │ 2.5    │ 50  │
│ 2   │ "b" │ 2.0    │ 20  │
│ 3   │ "c" │ 3.0    │ 30  │

如果您必须按日/月/等计算一些总数,您可能也会对this so answer感兴趣。