我有以下DataFrame:
df = pd.DataFrame({
'Trader': 'Carl Mark Carl Joe Mark Carl Max Max'.split(),
'Share': list('ABAABAAA'),
'Quantity': [5,2,5,10,1,5,2,1]
}, index=[
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,1,1,20,0),
DT.datetime(2013,1,2,10,0),
DT.datetime(2013,1,2,12,0),
DT.datetime(2013,1,2,14,0),
DT.datetime(2013,6,2,14,0),
DT.datetime(2013,7,2,14,0),
])
是否可以每天创建一个Period对象,从具体日期开始抽象。我想评估样本中的交易者是否倾向于交易较低的交易量。
为此,我想创建一个这样的表:
Period | Trader | Quantity
--------------------------
1 | Carl | 10
1 | Mark | 2
1 | Joe | 10
1 | Max | 2
2 | Carl | 5
2 | Mark | 1
2 | Max | 1
安迪
更新
上面的Datasampel太简单了,无法显示我的问题。我希望创建一个从具体日期中抽象出来的句点对象。我的目标是比较每个交易者发生的交易的顺序。
df1 = pd.DataFrame({
'Trader': 'Carl Mark Carl Joe Mark Carl Max Max'.split(),
'Share': list('ABAABAAA'),
'Quantity': [5,2,5,10,1,5,2,1]
}, index=[
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,1,1,20,0),
DT.datetime(2013,2,6,10,0),
DT.datetime(2013,2,5,12,0),
DT.datetime(2013,3,7,14,0),
DT.datetime(2013,6,4,14,0),
DT.datetime(2013,7,4,14,0),
])
答案 0 :(得分:0)
这会让你的桌子
In [22]: x = df.reset_index()
In [23]: x['day'] = x['index'].apply(lambda x: x.day)
In [24]: x
Out[24]:
index Quantity Share Trader day
0 2013-01-01 13:00:00 5 A Carl 1
1 2013-01-01 13:05:00 2 B Mark 1
2 2013-01-01 20:00:00 5 A Carl 1
3 2013-01-02 10:00:00 10 A Joe 2
4 2013-01-02 12:00:00 1 B Mark 2
5 2013-01-02 14:00:00 5 A Carl 2
6 2013-06-02 14:00:00 2 A Max 2
7 2013-07-02 14:00:00 1 A Max 2
但这可能是你想要的
In [25]: x.groupby(['day','Trader']).sum()
Out[25]:
Quantity
day Trader
1 Carl 10
Mark 2
2 Carl 5
Joe 10
Mark 1
Max 3