2016-09-07 190 views
1

在大熊貓如果我想只保留目標列,我可以做這樣的事情:Deedle,刪除所有但一列

>>> 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如果我想刪除所有列,但在「一」一欄,我在做雜技:

let dropCols = ["b"; "c"] 
dropCols |> List.iter (fun i -> someFrame.DropColumn i) 

someFrame?a,給出了一個系列。我如何將其轉換回框架?有沒有一種簡單的方法只保留幀中的目標列,而沒有將其轉換爲一個系列?

[編輯]

除了s952163的答案,它的價值張貼這個問題,以及:

fr.Columns.[["a"]] 

回答

1

你可以這樣做:

Frame.ofColumns [["a"] => df.["a"]]

儘管在你的榜樣上面你似乎是在突變df的地方。您可以將其重寫爲dropCols |> List.iter df.DropColumn,即不帶lambda。

API docs後,似乎也有這樣的: Frame.sliceCols ["a"] df