在熊猫中,如果我只想保留目标栏,我可以这样做:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame(np.random.randn(3,3), columns=list("abc"))
>>> df[["a"]]
a
0 0.057213
1 0.162161
2 1.351165
>>> type(res)
<class 'pandas.core.frame.DataFrame'>
请注意,结果仍然是数据帧。
然而在Deedle,如果我想删除所有列而不是“a”列,我必须做杂技:
let dropCols = ["b"; "c"]
dropCols |> List.iter (fun i -> someFrame.DropColumn i)
做someFrame?a
,给出一系列。如何将其转换回框架?是否有一种简单的方法可以仅保留帧中的目标列而不将其转换为系列?
[编辑]
除了s952163的答案之外,还值得发布这个:
fr.Columns.[["a"]]
答案 0 :(得分:0)
您可以执行以下操作:
Frame.ofColumns [["a"] => df.["a"]]
虽然在上面的示例中,您似乎正在改变df。您可以将其重写为dropCols |> List.iter df.DropColumn
,即不使用lambda。
看API docs之后,似乎还有这个:
Frame.sliceCols ["a"] df
。