多级熊猫分组

2023-12-27

我需要保持“每个帐户每个团队每个股票”的位置。所以我认为熊猫groupby可能会被使用。我也尝试在数据框的评论中陈述我的问题。位置栏是我手动添加的。

初始 df 我有

             time account scrip  buy_price  sell_price  qty   team  
0  06/07/17 09:36      A1  FUT1       50.0         NaN    2  team1         
1  06/07/17 09:46      A2  FUT1      100.0         NaN    2  team1         
2  06/07/17 09:56      A3  FUT1       10.0         NaN    2  team2         
3  06/07/17 09:57      A3  FUT1        NaN        10.0    2  team2         
4  06/07/17 09:58      A1  FUT1        NaN        50.0    1  team1         
5  06/07/17 09:59      A3  FUT1        NaN        50.0    1  team2 

我需要添加位置。位置列是我手动添加的,在评论中我写了额外的注释,以清楚地说明如何计算位置。

             time account scrip  buy_price  sell_price  qty   team  position                                    comment
0  06/07/17 09:36      A1  FUT1       50.0         NaN    2  team1         2  this can only be sold by team1 account A1
1  06/07/17 09:46      A2  FUT1      100.0         NaN    2  team1         2  this can only be sold by team1 account A2
2  06/07/17 09:56      A3  FUT1       10.0         NaN    2  team2         2  this can only be sold by team2 account A3
3  06/07/17 09:57      A3  FUT1        NaN        10.0    2  team2         0                 sold by team 2 in  acc A3 
4  06/07/17 09:58      A1  FUT1        NaN        50.0    1  team1         1                  sold by team 1 in acc A1 
5  06/07/17 09:59      A3  FUT1        NaN        50.0    1  team2        -1                   sold by team 2 in acc A3

上面的例子只是 1 个股票 FUT1,会有很多股票。我的最终结果会类似于。

Team Account Scrip Position
team1 A1      FUT1 1 
      A2      FUT1 2
team2 A3      FUT1 -1

一旦成功计算位置,就可以稍后处理最终结果。 我的方法:在每一行中创建一个唯一的键,以便知道何时进行 + 或 - 位置。例如。A1_FUT1_team1 for row1 A2_FUT1_team1 for row2。然后添加减去匹配键。这无论如何是一个好方法吗?


您的问题可以通过两步轻松解决:

第一步:

import math
df['some_stuff'] = df.apply(lambda x: -x.qty if math.isnan(x.buy_price) else x.qty,axis=1)

该行正在创建一个新列some_stuff,为什么我这样做只是为了介绍一些逻辑gain and loss在你的数据中。

如果您不想要新列并且您喜欢这个想法,只需替换qty列如下:

df['qty'] = df.apply(lambda x: -x.qty if math.isnan(x.buy_price) else x.qty,axis=1)

接下来,我使用这个新列来创建您的position column如下:

df['position'] = df.groupby(['team','account','scrip'])['some_stuff'].cumsum()

生成此列:

position
       2
       2
       2
       0
       1
      -1

bonus:

如果你想删除多余的列some_stuff只需使用:

del df['some_stuff']

第二步:

这是您使用以下行获得最终分组表的步骤:

print(df.groupby(['team', 'account', 'scrip']).min())

最终输出:

                               time  buy_price  sell_price  qty  position
team  account scrip                                                      
team1 A1      FUT1   06/07/17 09:36       50.0        50.0    1         1
      A2      FUT1   06/07/17 09:46      100.0         NaN    2         2
team2 A3      FUT1   06/07/17 09:56       10.0        10.0    1        -1

我相信这可以回答您的问题。

文档:

pandas.DataFrame.apply https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

pandas.Groupby https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html

pandas.DataFrame.cumsum https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.cumsum.html

pandas.DataFrame.min https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.min.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多级熊猫分组 的相关文章

随机推荐

  • 未调用搜索控制器的更新搜索结果

    有谁知道为什么这里不叫它 谢谢 我认为我正确地设置了代表 class LocationSearchController UIViewController UISearchResultsUpdating UINavigationBarDele
  • ArrayAdapter 的 getViewTypeCount 和 getItemViewType 方法

    有人可以用简单的话解释我的用法吗getViewTypeCount and getItemViewType 的方法ArrayAdapter 这些处理您想要不同的情况types不同行的视图 例如 在联系人应用程序中 您可能希望偶数行在左侧显示图
  • 关闭呈现视图控制器

    我有以下情况 视图控制器 A gt 以模态方式呈现 gt 视图控制器 B 视图控制器 B gt 以模态方式呈现 gt 视图控制器 C 我想关闭视图控制器 C 并直接转到 A 而不是显示 B 因为当时显示 B 没有意义 我怎样才能做到这一点
  • 程序集在大数字之前打印字符

    这个程序可以很好地打印小数字 但不能打印大数字 我不知道为什么 例如print 1346269将打印为 c1346269 和print 40000将打印为 40000 就像它应该的那样 这是宏 macro print 1 mov rax 1
  • MAX 与 Top 1 - 哪个更好?

    我必须审查一些代码 并遇到了有人做过的事情 并且想不出为什么我的方法更好但可能不是的原因 那么 哪个更好 更安全 更高效 SELECT MAX a date FROM a table WHERE a primary key 5 GROUP
  • TinyMCE 4 - 将自定义样式/类/属性添加到任何 HTML 标签

    是否有任何插件 可能性允许通过 TinyMCE 4 WYSIWYG 将自定义属性添加到 HTML 标签 例如 我通过编辑器添加了此代码 而不是通过源代码 div a href uploads myfile pdf My file img s
  • 使用 JavaScript 以复利计算未来价值

    我正在尝试编写一个脚本 其中用户插入每月收入并获得 30 年后复利的未来价值 现在 我已经分配了一些值用于测试目的 Future Value var investment 800 var annualRate 2 var monthlyRa
  • 为多个 JavaScript 文件启用严格模式

    要为所有 JavaScript 启用严格模式 use strict 设置需要位于每个导入的 JavaScript 文件的顶部 第一个文件的顶部还是任何文件的顶部 似乎没有这方面的文档 Thanks 它需要位于您想要的每个脚本的顶部stric
  • 将列表转换为 R 中的数据框并添加带有子列表名称的列

    List l有三个字符串 分别命名为一 二和三 我想转换l到数据框 我需要一个附加列 其名称为n l lt list c a b c c d e c e n lt c one two three 我可以使用循环来完成此操作 但我确信有更有效
  • 三路异或类函数

    我正在尝试解决以下难题 Given a stream of numbers only 1 iteration over them is allowed in which all numbers appear 3 times but 1 nu
  • Terraform 0.12 - 从嵌套 for 循环生成地图/对象

    作为后续Terraform 0 12 嵌套 for 循环 https stackoverflow com questions 56047306 terraform 0 12 nested for loops 57280420 5728042
  • 我如何在 django 中获取 .save() 的查询?

    我正在更新 django 模型对象 当我打电话时为每个属性设置值后obj save 它给了我OperationalError 2006 MySQL server has gone away 我非常想知道是什么导致了以下错误 我怎样才能得到查
  • 存储数据的奇怪字符编码,旧脚本显示它们很好,新脚本却没有

    我正在尝试重写一个旧网站 它是波斯语 使用波斯语 阿拉伯语字符 CREATE DATABASE db DEFAULT CHARACTER SET utf8 COLLATE utf8 persian ci USE db 几乎我所有的表 列 C
  • Objective-C 的单元测试和代码覆盖框架?

    我计划为 iPhone 编写几个应用程序 想知道是否有针对 Objective C 的单元测试和代码覆盖框架 对于 iPhone 应用程序的单元测试 有OCTest http developer apple com iphone libra
  • UISearchDisplayController 就像 ios 7 日历应用程序中一样

    如何实现 我有带有搜索图标的 UIBarButtonItem 单击它后 我想在导航栏中显示搜索栏并单击cancel按钮在搜索栏中 我想显示没有搜索的导航栏 并带有按钮和标题 就像 IOS 7 日历应用程序中一样 来自苹果文档 在 iOS 7
  • java h2内存数据库错误:找不到表

    我尝试用谷歌搜索 但几乎所有此类问题的解决方案是添加 DB CLOSE DELAY 1 但是它并没有为我解决任何问题 这是我的测试课 RunWith SpringJUnit4ClassRunner class ContextConfigur
  • Spring WebClient:自动计算正文的 HMAC 签名并将其作为标头传递

    在我的 Spring Boot 应用程序中 我使用RestTemplate调用 WS 其主体 HMAC 签名应作为 HTTP 标头提供 为此 我使用了ClientHttpRequestInterceptor 基本上 我做了 Override
  • 用于创建插入脚本的 SQL 脚本

    标题有点模糊 我会解释一下 我正在编写一个 SQL 脚本来为数据库中表的每一行创建一条插入语句 纯粹是为了能够将该数据应用回另一个数据库 这是我现在所拥有的 SELECT INSERT INTO products id name descr
  • .Net Standard 2.0 中包含但 .Net Framework 4.6.1 中没有的 43 个 API 是什么?

    SO问题题为 NET 标准 API 参考 https stackoverflow com q 40923831 2314532 引用中的讨论https github com dotnet standard issues 133 https
  • 多级熊猫分组

    我需要保持 每个帐户每个团队每个股票 的位置 所以我认为熊猫groupby可能会被使用 我也尝试在数据框的评论中陈述我的问题 位置栏是我手动添加的 初始 df 我有 time account scrip buy price sell pri