重命名 Deedle 数据框列的直接功能方法
A straightforward functional way to rename columns of a Deedle data frame
是否有一种简洁实用的方法来重命名 Deedle 数据框的列 f
?
f.RenameColumns(...)
是可用的,但是会改变它所应用的数据框,所以让重命名操作幂等有点痛苦。我有一个类似 f.RenameColumns (fun c -> ( if c.IndexOf( "_" ) < 0 then c else c.Substring( 0, c.IndexOf( "_" ) ) ) + "_renamed")
的东西,它很丑。
如果能从输入帧创建一个新帧就好了,像这样:Frame( f |> Frame.cols |> Series.keys |> Seq.map someRenamingFunction, f |> Frame.cols |> Series.values )
但这会被第二部分绊倒——f |> Frame.cols |> Series.values
的类型不是Frame
构造函数需要什么。
我怎样才能简洁地转换 f |> Frame.cols |> Series.values
以便它的结果可以被 Frame
构造函数使用?
与RenameColumns
一起使用可以判断其作用:
df.RenameColumns someRenamingFunction
您还可以使用函数Frame.mapColKeys。
Builds a new data frame whose columns are the results of applying the
specified function on the columns of the input data frame. The
function is called with the column key and object series that
represents the column data.
Source
示例:
type Record = {Name:string; ID:int ; Amount:int}
let data =
[|
{Name = "Joe"; ID = 51; Amount = 50};
{Name = "Tomas"; ID = 52; Amount = 100};
{Name = "Eve"; ID = 65; Amount = 20};
|]
let df = Frame.ofRecords data
let someRenamingFunction s =
sprintf "%s(%i)" s s.Length
df.Format() |> printfn "%s"
let ndf = df |> Frame.mapColKeys someRenamingFunction
ndf.Format() |> printfn "%s"
df.RenameColumns someRenamingFunction
df.Format() |> printfn "%s"
打印:
Name ID Amount
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20
Name(4) ID(2) Amount(6)
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20
Name(4) ID(2) Amount(6)
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20
是否有一种简洁实用的方法来重命名 Deedle 数据框的列 f
?
f.RenameColumns(...)
是可用的,但是会改变它所应用的数据框,所以让重命名操作幂等有点痛苦。我有一个类似 f.RenameColumns (fun c -> ( if c.IndexOf( "_" ) < 0 then c else c.Substring( 0, c.IndexOf( "_" ) ) ) + "_renamed")
的东西,它很丑。
如果能从输入帧创建一个新帧就好了,像这样:Frame( f |> Frame.cols |> Series.keys |> Seq.map someRenamingFunction, f |> Frame.cols |> Series.values )
但这会被第二部分绊倒——f |> Frame.cols |> Series.values
的类型不是Frame
构造函数需要什么。
我怎样才能简洁地转换 f |> Frame.cols |> Series.values
以便它的结果可以被 Frame
构造函数使用?
与RenameColumns
一起使用可以判断其作用:
df.RenameColumns someRenamingFunction
您还可以使用函数Frame.mapColKeys。
Builds a new data frame whose columns are the results of applying the specified function on the columns of the input data frame. The function is called with the column key and object series that represents the column data. Source
示例:
type Record = {Name:string; ID:int ; Amount:int}
let data =
[|
{Name = "Joe"; ID = 51; Amount = 50};
{Name = "Tomas"; ID = 52; Amount = 100};
{Name = "Eve"; ID = 65; Amount = 20};
|]
let df = Frame.ofRecords data
let someRenamingFunction s =
sprintf "%s(%i)" s s.Length
df.Format() |> printfn "%s"
let ndf = df |> Frame.mapColKeys someRenamingFunction
ndf.Format() |> printfn "%s"
df.RenameColumns someRenamingFunction
df.Format() |> printfn "%s"
打印:
Name ID Amount
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20
Name(4) ID(2) Amount(6)
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20
Name(4) ID(2) Amount(6)
0 -> Joe 51 50
1 -> Tomas 52 100
2 -> Eve 65 20