2016-11-29 69 views
1

我玩弄股票數據的某些羣體,我試圖來篩選有更多的購買羣體比各自對Transaction試圖查詢該滿足VALUE_COUNT條件

所以我的代碼出售「M運行,以顯示下面的數據是

df.groupby('Stock').Transaction.value_counts() 

數據

Stock Transaction  
ADC Buy     2 
AKAM Option Exercise 51 
     Sale    34 
     Buy     9 
AMNB Buy    10 
ARCC Buy    15 
ARL Buy    12 
ASA Buy     7 
ASRV Buy    12 
     Option Exercise  1 
AUBN Buy     4 
     Sale    11 
BAC Option Exercise 23 
     Buy    15 
     Sale    7 
BCBP Buy     3 
     Sale    11 
BKSC Buy    55 
BMRA Buy     5 
     Option Exercise  3 
     Sale    1 


         .. 

我可以通過證券報價機分組的數據,然後尋找在其各自的colu mn Transaction值。我正在嘗試過濾掉其交易value_counts有更多Buy而不是Sale的組。

我不知道如何做到這一點。

我想是這樣的:

df.groupby('Stock').filter(lambda x: x.Transaction.value_counts().Buy > x.value_counts().Sale)

很奇怪不,儘管這種工作的工作:

df.Transaction.value_counts().Buy 

>>>2674 

我也嘗試過的東西沿着

df.groupby('Stock').Transaction.filter(lambda x: x if x.value_counts().Buy > x.value_counts().Sale) 

但我無法想象在這種情況下哪種熊貓工具是理想的。

輸出可以從滿足該條件,打印出整個集團(股票名稱和交易)的股票只是名稱,也

所以輸出會是這樣的

ADC Buy     2 
AMNB Buy    10 
ARCC Buy    15 
ARL Buy    12 
ASA Buy     7 
ASRV Buy    12 
     Option Exercise  1 

BAC Option Exercise 23 
     Buy    15 
     Sale    7 
BKSC Buy    55 
BMRA Buy     5 
     Option Exercise  3 
     Sale    1 

或者只是股票名稱。

謝謝。

回答

1

我倒是unstack然後query

d1 = df.groupby('Stock').Transaction.value_counts() 
d1.unstack(fill_value=0).query('Buy > Sale') 

enter image description here

我們可以拿回來都不錯這種

d1.unstack(fill_value=0).query('Buy > Sale') \ 
    .replace(0, np.nan).stack().astype(int) 

Stock Transaction  
ADC Buy     2 
AMNB Buy    10 
ARCC Buy    15 
ARL Buy    12 
ASA Buy     7 
ASRV Buy    12 
     Option Exercise  1 
BAC Buy    15 
     Option Exercise 23 
     Sale    7 
BKSC Buy    55 
BMRA Buy     5 
     Option Exercise  3 
     Sale    1 
dtype: int64 
+0

驚人的整潔。我知道必須有一個簡單的解決方案。謝謝! – Moondra