首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能创建由头值组成的变量,也可以通过pandas求和吗?

你能创建由头值组成的变量,也可以通过pandas求和吗?
EN

Stack Overflow用户
提问于 2021-10-14 03:02:58
回答 1查看 28关注 0票数 0

我有一个由400列组成的数据帧,每个列都有单独的标题。每个标头都是掉期衍生品期货合约,每天的成交量在每一行。

我想知道是否有可能将合同名称的不同列表/分组另存为变量,然后让一个函数每天执行每个分组的总成交量。然后,我可以在以后编辑分组名称。每天要汇总的这些分组中的一些可以有多达90个不同的合约。我已经创建了一个Excel文件,用于列出前一个月卷、后一个月卷、总卷所有合同等的合同名称

例如,

分组1:前一个月未平仓权益将由“2022年3月合约”、“2021年9月合约”、“2021年12月合约”组成,每天汇总。

分组2:前几个月未平仓权益为“2021年6月合约”、“2021年3月合约”等,每天汇总。每天,此.csv都会添加一行,其中包含400个合约的值。

任何方向都会非常感谢。我一直在尝试寻找一个创建标题值的变量的示例,我可以在旁边更改这些值,然后对其求和。

编辑* Here is a picture of the dataframe

我希望在程序外部创建一个我可以引用的变量,该变量包含不同分组的列表。例如,下面是一个电子表格的片段。我希望这些分组是一个变量或列表,当它每季度变化时,我可以编辑它。

Snippet of Groupings example, only did a few contracts, but will be long list of 30+ contracts to be summed

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 04:07:01

最好不要猜测你的数据帧是什么样子的,所以如果你可以在下面的例子不正确的情况下发布一个缩小的版本,这将是有帮助的。

任何人,如果您的df只是日期、卷和头,这个示例获取头分组,并根据列名对数据帧进行切片,然后按天对卷进行求和。从这里,您可以知道如何编写该代码以使其更加出色,或者根据需要调整代码

代码语言:javascript
运行
复制
df = pd.DataFrame([range(1,9),range(11,19),range(21,29),range(31,39),range(41,49),range(51,59),range(61,69)], 
                columns=['Contract 1','Contract 2','Contract 3','Contract 4','Contract 5','Contract 6','Contract 7','Contract 8'],
                index=pd.date_range(start='10/1/2021', periods=7))

group1 = ['Contract 1', 'Contract 2', 'Contract 3']
group2 = ['Contract 3', 'Contract 4', 'Contract 5','Contract 7', 'Contract 8']
group3 = ['Contract 1', 'Contract 8']

groups=[group1, group2, group3]

for g in groups:
    print(df[g])
    print(df[g].sum(axis=1))

输出

代码语言:javascript
运行
复制
            Contract 1  Contract 2  Contract 3
2021-10-01           1           2           3
2021-10-02          11          12          13
2021-10-03          21          22          23
2021-10-04          31          32          33
2021-10-05          41          42          43
2021-10-06          51          52          53
2021-10-07          61          62          63
2021-10-01      6
2021-10-02     36
2021-10-03     66
2021-10-04     96
2021-10-05    126
2021-10-06    156
2021-10-07    186
Freq: D, dtype: int64
            Contract 3  Contract 4  Contract 5  Contract 7  Contract 8
2021-10-01           3           4           5           7           8
2021-10-02          13          14          15          17          18
2021-10-03          23          24          25          27          28
2021-10-04          33          34          35          37          38
2021-10-05          43          44          45          47          48
2021-10-06          53          54          55          57          58
2021-10-07          63          64          65          67          68
2021-10-01     27
2021-10-02     77
2021-10-03    127
2021-10-04    177
2021-10-05    227
2021-10-06    277
2021-10-07    327
Freq: D, dtype: int64
            Contract 1  Contract 8
2021-10-01           1           8
2021-10-02          11          18
2021-10-03          21          28
2021-10-04          31          38
2021-10-05          41          48
2021-10-06          51          58
2021-10-07          61          68
2021-10-01      9
2021-10-02     29
2021-10-03     49
2021-10-04     69
2021-10-05     89
2021-10-06    109
2021-10-07    129
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69564601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档