Julia中使用类mutate管道式操作实现字符串转换与滚动均值计算
用管道式操作实现DataFrame的字符串转换与移动平均
没问题!你想要的这种管道式操作完全可以实现,而且写法比你预想的还要顺畅。咱们直接调整你的代码就能达到目标,先看正确的实现:
首先要确保你已经加载了必要的包(@linq宏来自DataFramesMeta,移动平均函数如果用StatsBase的movmean也需要提前加载):
using DataFrames, DataFramesMeta, StatsBase
然后就可以用管道式的写法完成所有操作:
# 生成处理后的新DataFrame,不修改原d1 processed_df = @linq d1 |> mutate(Exports = parse.(Float64, :Exports)) |> mutate(Exports_4mv = movmean(:Exports, 4))
关键点说明:
- 你原来的
@linq写法几乎是对的,核心就是用mutate串联起列转换和移动平均计算,所有操作都在管道里完成,不需要逐行修改原DataFrame。 - 第一个
mutate把字符串类型的Exports列批量转换成Float64数值类型,直接覆盖原列(如果不想覆盖原列,你可以把新列命名为Exports_Float之类的,比如mutate(Exports_Float = parse.(Float64, :Exports)))。 - 第二个
mutate基于转换后的数值列计算4期移动平均,生成新列Exports_4mv。这里我用了StatsBase包的movmean,如果你之前用的是其他包的runmean(比如TimeSeries里的函数),直接替换成runmean即可。
如果你想验证结果,可以用first(processed_df, 10)查看前10行,就能看到转换后的数值列和新生成的移动平均列啦。
内容的提问来源于stack exchange,提问作者codedancer
相关产品推荐
相关产品推荐

