df
ts_code type close
0 861001.TI 1 648.399
1 861001.TI 20 588.574
2 861001.TI 30 621.926
3 861001.TI 60 760.623
4 861001.TI 90 682.313
... ... ... ...
8328 885933.TI 5 1083.141
8329 885934.TI 1 951.493
8330 885934.TI 5 1011.346
8331 885935.TI 1 1086.558
8332 885935.TI 5 1028.449
目标
ts_code l5d_close l20d_close …… l90d_close
861001.TI NaN 1.10 0.95
…… …… …… ……
我想按ts_code
分组以计算type(1)
的close
/计算type(N:5,20,30……)
的close
。以861001.TI
为例,l5d_close
是nan,因为当类型为5时没有值l20d_close
等于648.399/588.574=1.10,{
试一试
df.groupby('ts_code')\
.pipe(lambda x: x[x.type==1].close/x[x.type==10].close)
Got: KeyError: 'Column not found: False'
类型值为:1,5,20,30,60,90180200
注意:每个ts_code
有一个type
列的值
嗯,我认为您不需要在这里分组,因为您并没有真正分组或使用任何聚合功能。
我认为使用函数创建一个新的DF会更容易
我没有运行代码来获得结果,因为您没有提供一种简单的方法来生成数据,希望这能有所帮助
很抱歉,但有时简单的解决方案是最好的(我会将其移动到函数)
使用^{} 确保} 提取它们:
type == 1
是每个组的第一行,并使用^{然后^{} 将
type
列插入列标题:要链接在一起,^{} 在^{} 之前的
ratio
列:您可以使用
pandas.DataFrame.pivot_table()
(docs)执行此操作。只要每个type
有一些数据,就会创建该列这将返回:
相关问题 更多 >
编程相关推荐