计算每天pandas数据帧的事务实例

时间:2017-10-15 21:07:47

标签: python pandas

我想从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 个答案:

答案 0 :(得分: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