2013-07-03 136 views
1

我有以下pd.DataFrame:使用從字典鍵過濾一個數據幀大熊貓

AllData = 
[email protected] [email protected] [email protected] [email protected] [email protected] 
1  8  3  3  8 
4  4  7  4  3 
6  8  9  1  6 
3  4  5  6  1 
7  6  0  8  1 

而且我想創建一個只有名字出現在下面的字典鍵的列的新pd.DataFrame :

my_dict={[email protected] : value1, [email protected] : value2, [email protected] : value5} 

因此,新的數據幀將是:

FilteredData = 
[email protected] [email protected] [email protected] 
    1  3  3 
    4  7  4 
    6  9  1 
    3  5  6 
    7  0  8 

什麼是最effici這樣做的方式?

我曾嘗試使用:

FilteredData = AllData.filter(regex=my_dict.keys) 

,但勿庸置疑,這沒有奏效。任何建議/意見歡迎

乾杯,亞歷克斯

回答

1

你也可以做到這一點沒有過濾器的方法與此相似:

FilteredData = AllData[my_dict.keys()] 
+0

這兩種方法的執行方式有什麼不同嗎? – user1083734

+0

我實際上並不確定在這個場景背後會發生什麼變化,但是這裏肯定有人必須這樣做? – bdiamante

1

大熊貓dataframes有一個方法叫做過濾器,將返回一個新的數據幀。試試這個

FilteredData = AllData.filter(items=my_dict.keys()) 
+0

沒有我的意思'items'到itmes,但我明白你在說什麼。 – John

+0

此方法與@bdiamante提議的方法有什麼區別? – user1083734

+0

@ user1083734有差異,但我對大熊貓比較陌生,不認爲我可以很好地解釋它們。你可以看看Github上的DataFrame源代碼,並親自查看。 ['__getitem__'](https://github.com/pydata/pandas/blob/master/pandas/core/frame.py#L1986)是bdiamante使用的「魔術」方法,[filter](https:/ /github.com/pydata/pandas/blob/master/pandas/core/frame.py#L3005)是我使用的方法。 – John