我试图在DataFrame
使用@linq
宏中选择某些数据行:
using DataFrames, DataFramesMeta
df=DataFrame(x = ["a", "a", "a", "b", "b", "b"],
y = [1, 2, 3, 2, 3, 4],
z = [100, 200, 300, 456, 345, 234])
| Row | x | y | z |
|-----|-----|---|-----|
| 1 | "a" | 1 | 100 |
| 2 | "a" | 2 | 200 |
| 3 | "a" | 3 | 300 |
| 4 | "b" | 2 | 456 |
| 5 | "b" | 3 | 345 |
| 6 | "b" | 4 | 234 |
我正在尝试选择具有y
给定类型的最大值的那些行x
,即
| Row | x | y | z |
|-----|-----|---|-----|
| 1 | "a" | 3 | 300 |
| 2 | "b" | 4 | 234 |
所以,我要按列分组x
并添加具有最大值的列
@linq df |> @by(:x, maxY = maximum(:y))
这使
| Row | x | maxY |
|-----|-----|------|
| 1 | "a" | 3 |
| 2 | "b" | 4 |
但我看不到如何放回相应的z条目。可能是这样,join
但我看不到如何执行该操作或以另一种简单方式获得结果。
你可以这样做一个连线on=[:x,:y]
,但是这个工作,你需要命名maximum(:y)
列y
不是maxY
:
df2 = @linq df |> by(:x, y=maximum(:y)) |> join(df, on=[:x, :y])
您以后可以将该列重命名为预期的列maxY
:
rename!(df2, :y, :maxY)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句