2017-10-15 110 views
1

我想從csv文件中檢索一列,並使其成爲數據框中的索引。但是,我意識到我可能需要事先做好一步。每天計算事務實例熊貓數據幀

csv看起來像這樣;

Date,Step,Order,Price 
    2011-01-10,Step,BUY,150 
    2011-01-10,Step,SELL,150 
    2011-01-13,Step,SELL,150 
    2011-01-13,Step1,BUY,400 
    2011-01-26,Step2,BUY,100 

如果我打印數據框,這是輸出:

Date Step Order Price 
0  0 Step BUY 150 
1  1 Step SELL 150 
2  2 Step SELL 150 
3  3 Step1 BUY 400 
4  4 Step2 BUY 100 

不過,我想輸出是告訴每個類型的步驟我有每天有多少買/賣。

例如;

預期數據幀和輸出是:

Date  Num-Buy-Sell            
2011-01-10 2 
2011-01-13 2 
2011-01-16 1 

這是我如何檢索數據幀中的代碼;

num_trasanctions_day = pd.read_csv(orders_file, parse_dates=True, sep=',', dayfirst=True) 
num_trasanctions_day['Transactions'] = orders.groupby(['Date', 'Order']) 
num_trasanctions_day['Date'] = num_trasanctions_day.index 

我的第一個想法是讓日期成爲指數,但我想我需要計算每個日期有多少賣出/買入。

錯誤

KeyError: 'Order' 

感謝

回答

1

只需使用value_counts

df.Date.value_counts() 
Out[27]: 
    2011-01-13 2 
    2011-01-10 2 
    2011-01-26 1 
Name: Date, dtype: int64 

編輯:如果你想分配給它回來,你正在尋找transform也請修改您的預期輸出。

df['Transactions']=df.groupby('Date')['Order'].transform('count') 
df 
Out[122]: 
      Date Step Order Price Transactions 
0  2011-01-10 Step BUY 150    2 
1  2011-01-10 Step SELL 150    2 
2  2011-01-13 Step SELL 150    2 
3  2011-01-13 Step1 BUY 400    2 
4  2011-01-26 Step2 BUY 100    1 
+0

如果我做了num_trasanctions_day ['Transactions'] = num_trasanctions_day.Date.value_counts(),那麼它只打印NaN。有沒有辦法將這些計數作爲輸出追加到列中? –

+0

@Codinghierarchy add'.to_frame()' – Wen

+0

仍然是NaNs num_trasanctions_day ['Transactions'] = num_trasanctions_day.Date.value_counts()。to_frame() –