python - Pandas 通过事件创建月末持有量

标签 python django pandas

我正在尝试根据 df_td 事件列表中的“问题”查找月末余额。

实际上,我只是想找到每个月末余额为正的“问题”的数量。

为此,我需要根据月末日期之前的事件的每个“问题”、“操作”和“份额”创建月末余额。因此,每个期间余额 > 0 的问题总数。

“action”用于判断是买入还是卖出,“+”还是“-”。因此,每个“发行”的余额为“+ 股”减去“- 股”。

以前我使用 sql 来执行此操作,但这似乎是一种严重的浪费。

使用 Pandas 执行此操作的最佳方法是什么?

df_td

   action code     comm    credit        date  \
0       +    P     0.00      0.00  2013-03-27   
1       +    P     0.00      0.00  2013-03-27   
2       -    S    19.00  86751.01  2013-04-08   
3       +    Z  2000.00      0.00  2013-04-09   
4       -    S    18.71    730.49  2013-04-10   

                                       issue  \
   FIDELITY REAL ESTATE INVESTMENT PORTFOLIO FUND   
                FIDELITY NJ MUNICIPAL INCOME FUND   
   FIDELITY REAL ESTATE INVESTMENT PORTFOLIO FUND   
              AMERICAN RLTY CAP HEALTHCARE TR INC   
                FIDELITY NJ MUNICIPAL INCOME FUND   

     price    shares 
0  34.4800  2462.958    
1   0.2003    60.963      
2  35.2300  2462.958     
3  10.0000  2000.000     
4  12.2900    60.960    

以 df_month 结束的月份示例

        month
0  2013-03-31
1  2013-04-30
2  2013-05-31
3  2013-06-30
4  2013-07-31

当我循环几个月时,我如何获得 df_td 中每个问题的“平衡”?

我希望这是有道理的?

谢谢。

最佳答案

检查以下代码是否满足您的需求:

def get_balance(x):
    return x.comm + x.credit + x.price*x.shares*(1 if x.action == '+' else -1)

df['balance'] = df.apply(get_balance, axis=1)
df.query('balance>0').set_index('date').resample('M').agg({'issue': 'nunique', 'balance': np.sum})

* 注意*

  1. 确保您的日期字段采用正确的格式(即 datetime64[ns])

    df['date'] = pd.to_datetime(df['date'], format="%Y-%m-%d")

  2. 如果问题的总余额是问题所在,您可以将 .query('balance>0') 移动到链的末尾。

测试:Python 3.6.4 + Pandas 0.22.0

关于python - Pandas 通过事件创建月末持有量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50072394/

相关文章:

python - 在 Django 表单字段之间显示一些自由文本

python - 使用 Matplotlib 自定义基于时间序列的数据的 x Axis

python - 将日期索引拆分为年度索引和每月列

python - 如何在函数 Python 中调用类

python - 无法在 Linux Mint 18.2 Cinnamon 64 位的 Anaconda Navigator 中打开 Spyder

django - 如何从 django-tables2 中删除分页区域中总行数的表示法

DJANGO:TemplateDoesNotExist:auth/user_confirm_delete.html

python - 以 3 为一组聚合数据框

python - python中PCA的内存错误

python - sklearn : Custom scorer on pre-defined split