Python聚合函数(groupby)在证券等行业实际运用

 

转自  qcyfred 


一天的交易结束后,根据交易流水,要生成持仓汇总。
所以推荐使用py的聚合函数,groupby。
案例代码演示是这样的。

import pandas as pd
1
df = pd.read_excel('trade.xlsx')
1
df
1
证券代码    证券名称    买卖方向    数量
0    601318    中国平安    买入    100
1    601398    工商银行    买入    100
2    600050    中国联通    买入    100
3    601318    中国平安    卖出    100
4    601318    中国平安    买入    200
5    600050    中国联通    买入    100
6    600050    工商银行    卖出    100
df_grp = df.groupby(['证券代码', '买卖方向']).sum()
1
df_grp
1
数量
证券代码    买卖方向    
600050    买入    200
卖出    100
601318    买入    300
卖出    100
601398    买入    100
tmp_df = df.copy()
tmp_df.index = [df['证券代码'], df['买卖方向']]
tmp_df
1
2
3
证券代码    证券名称    买卖方向    数量
证券代码    买卖方向                
601318    买入    601318    中国平安    买入    100
601398    买入    601398    工商银行    买入    100
600050    买入    600050    中国联通    买入    100
601318    卖出    601318    中国平安    卖出    100
买入    601318    中国平安    买入    200
600050    买入    600050    中国联通    买入    100
卖出    600050    工商银行    卖出    100
tmp_df.drop_duplicates(['证券代码','买卖方向'], inplace=True)
tmp_df
1
2
证券代码    证券名称    买卖方向    数量
证券代码    买卖方向                
601318    买入    601318    中国平安    买入    100
601398    买入    601398    工商银行    买入    100
600050    买入    600050    中国联通    买入    100
601318    卖出    601318    中国平安    卖出    100
600050    卖出    600050    工商银行    卖出    100
other_cols = list(set(tmp_df.columns) - set(df_grp.columns))
df_sum = pd.concat([df_grp, tmp_df.loc[:, other_cols]], axis=1)
1
2
df_sum
1
数量    证券名称    证券代码    买卖方向
证券代码    买卖方向                
600050    买入    200    中国联通    600050    买入
卖出    100    工商银行    600050    卖出
601318    买入    300    中国平安    601318    买入
卖出    100    中国平安    601318    卖出
601398    买入    100    工商银行    601398    买入


上面的案例,py代码在附在下面。

# coding: utf-8

import pandas as pd

df = pd.read_excel('trade.xlsx')

df_grp = df.groupby(['证券代码', '买卖方向']).sum()

tmp_df = df.copy()
tmp_df.index = [df['证券代码'], df['买卖方向']]
tmp_df.drop_duplicates(['证券代码','买卖方向'], inplace=True)

other_cols = list(set(tmp_df.columns) - set(df_grp.columns))
df_sum = pd.concat([df_grp, tmp_df.loc[:, other_cols]], axis=1)

————————————————
版权声明:本文为CSDN博主「qcyfred」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qcyfred/article/details/78785792

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值