我已经搜索了很多次了,但是我无法理解这个问题:
我有一个熊猫的数据图,看起来是这样的:
date ticker Name NoShares SharePrice Volume Relation
2/1/10 aaa zzz 1 1 1 d
2/1/10 aaa yyy 1 2 5 o
2/1/10 aaa zzz 2 5 2 d
2/5/10 bbb xxx 5 5 1 do
2/5/10 ccc www 5 5 1 d
2/5/10 ccc www 5 5 1 d
2/5/10 ddd vvv 5 5 1 o
2/6/10 aaa zzz 1 1 3 d要求
所以我的输出应该是这样的:
date ticker Name NoShares SharePrice Volume Relation
2/1/10 aaa zzz 3 3.6 1 d
2/1/10 aaa yyy 1 2 5 o
2/5/10 bbb xxx 5 5 1 do
2/5/10 ccc www 10 5 1 d
2/5/10 ddd vvv 5 5 1 o
2/6/10 aaa zzz 1 1 3 d我尝试了堆栈溢出的文档和其他答案,但似乎无法正确处理。感谢你的帮助。干杯。
发布于 2018-06-21 20:08:25
这是我的解决方案:
grpby = df.groupby(['date','Name'])
a = grpby.apply(lambda x: np.average(a = x['SharePrice'],weights=x['NoShares'])).to_frame(name='SharePrice')
b = grpby.agg({'NoShares':'sum','Volume':'mean','Relation':'max'})
print b.join(a)
Volume Relation NoShares SharePrice
date Name
2/1/10 yyy 5.0000 o 1 2.0000
zzz 1.5000 d 3 3.6667
2/5/10 vvv 1.0000 o 5 5.0000
www 1.0000 d 10 5.0000
xxx 1.0000 do 5 5.0000
2/6/10 zzz 3.0000 d 1 1.0000之后只有reset_index()。
https://stackoverflow.com/questions/50976297
复制相似问题