我有一个看起来像的数据集
tradeid buyer seller quantity
1 John Mark 10
2 Frank John 5
3 John Jesse 4
基本上每行对应于买卖双方之间的交易。例如,在第一行中,我们看到John(买方)从Mark(卖方)购买了10批商品。
我想以一种方式转换数据集,即每一行对应一个交易者,并且我拥有该交易者相应的总买卖量。那是
output
trader totalbuy totalsell
John 14 5
Frank 5 0
Jesse 0 4
Mark 0 10
我使用的是熊猫的最新版本,数据很大。进行上述转换的最有效方法是什么?
非常感谢!!
数据框:
import pandas as pd
from io import StringIO
datastring = StringIO("""\
tradeid buyer seller quantity
1 John Mark 10
2 Frank John 5
3 John Jesse 4
""")
df = pd.read_table(datastring, sep='\s\s+', engine='python')
您可以做几个groupby
-sum
之后是水平的concat
:
>>> >>> pd.concat(
[df.quantity.groupby(df.buyer).sum()\
.reset_index().set_index('buyer').rename(columns={'quantity': 'totalBuy'}),
df.quantity.groupby(df.seller).sum()\
.reset_index().set_index('seller').rename(columns={'quantity': 'totalSell'})],
axis=1).fillna(0)
totalBuy totalSell
Frank 5 0
Jesse 0 4
John 14 5
Mark 0 10
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句