假设您有一个权重字典,需要乘以deedle框架的相应列。在python中它将是这样的:
>>> df = pd.DataFrame(np.ones((3,3)),columns=list("abc"))
>>> d = {"a":1, "b":2, "c":3}
>>> df * pd.Series(d)
a b c
0 1.0 2.0 3.0
1 1.0 2.0 3.0
2 1.0 2.0 3.0
如何在Deedle中解决这个问题?
答案 0 :(得分:0)
好吧,我可以用三行来制作它,但绝对不像熊猫那样:
let df = Array2D.create 3 3 1. |> Frame.ofArray2D |> Frame.indexColsWith("abc" |> Seq.toArray)
let multi = dict ['a',1.;'b',2.;'c',3.;]
df |> Frame.getNumericCols |> Series.map (fun idx v -> multi.[idx] * v) |> Frame.ofColumns
请注意,我正在从字符串数组创建一系列字符,因此'a'
。
我含糊地回忆起运营商可能超负荷工作在大熊猫的数据框架上工作。你也可以用deedle做同样的事情。所以你可以说df * df'
,其中df'
包含你的标量乘以。
这样的事情:
let df' = Array2D.init 3 3 (fun i j -> float j + 1.) |> Frame.ofArray2D |> Frame.indexColsWith("abc" |> Seq.toArray)
df * df'