我导入交易清单并尝试将其合并到具有总计数量和平均价格的仓位文件中。我根据(自动收报机,类型,到期和罢工)进行分组。两个问题:
数据帧:
GM stock 1 1 32 100
AAPL call 201612 120 3.5 1000
AAPL call 201612 120 3.25 1000
AAPL call 201611 120 2.5 2000
AAPL put 201612 115 2.5 500
AAPL stock 1 1 117 100
代码:
import pandas as pd
import numpy as np
df = pd.read_csv(input_file, index_col=['ticker', 'type', 'expiration', 'strike'], names=['ticker', 'type', 'expiration', 'strike', 'price', 'quantity'])
df_output = df.groupy(df.index).agg({'price':np.mean, 'quantity':np.sum})
df_output.to_csv(output_file, sep=',')
csv输出以这种格式出现:
(ticker, type, expiration, strike), price, quantity
所需格式:
ticker, type, expiration, strike, price, quantity
答案 0 :(得分:0)
对于第一个问题,你应该使用groupby(df.index_col)而不是groupby(df.index)
对于第二种,我不确定为什么你不能保留"",这是数字吗?
我模拟了下面的一些数据:
import pandas as pd
import numpy as np
d = [
{'ticker':'A', 'type':'M', 'strike':'','price':32},
{'ticker':'B', 'type':'F', 'strike':100,'price':3.5},
{'ticker':'C', 'type':'F', 'strike':'', 'price':2.5}
]
df = pd.DataFrame(d)
print df
#dgroup = df.groupby(['ticker', 'type']).agg({'price':np.mean})
df.index_col = ['ticker', 'type', 'strike']
dgroup = df.groupby(df.index_col).agg({'price':np.mean})
#dgroup = df.groupby(df.index).agg({'price':np.mean})
print dgroup
print type(dgroup)
dgroup.to_csv('check.csv')
在check.csv输出:
ticker,type,strike,price
A,M,,32.0
B,F,100,3.5
C,F,,2.5