我想从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'
由于
答案 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