我有一个由400列组成的数据框架,每个列都有单独的标题。每个标头是一个互换衍生品期货合约,每一行每天的成交量。
我想知道是否有可能将合同名称保存为变量的不同列表/分组,然后有一个函数执行每天每个分组的总量。然后,我可以在以后编辑分组名称。其中一些每天要总结的分组可能有多达90种不同的合同。我已经创建了一个Excel文件,列出了前一个月交易量、后一个月交易量、总交易量、所有合同等合同的名称
例如,
第1组:前一个月未平仓合约将由[' 2022年3月合约'],[' 2021年9月合约'],[' 2021年12月合约']组成,每天汇总。
分组2:回个月未平仓("2021年6月合同"),("2021年3月合同"),每天总结等。每天,此.csv添加一行,其中包含400个合同中的每个合同的值。
任何指示将不胜感激。我一直在试图找到一个创建头值变量的例子,我可以在一边改变,然后再求和。
编辑*这是数据框
的图片我希望在程序之外创建一个变量,我可以引用包含不同分组列表的程序。例如,下面是一个电子表格的片段。我希望这些分组是一个变量或列表,我可以编辑,因为它每季度变化。
分组示例片段,只做了几个合同,但将有30多个合同的长列表要求和
最好不要猜测你的数据框架是什么样子的,所以如果你能在下面的例子不正确的情况下发布一个缩小的版本,那将会很有帮助。
无论如何,如果您的df只是日期、卷和标题,那么本例将采用标题分组,并根据列名对数据框架进行切片,并按天对卷求和。从这里你可以弄清楚如何编写excel或根据需要调整代码
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))
输出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