如何按date与ticker分组DataFrame并对ret值进行降序排序?
解决方法
1. 修正分组排序的代码
你的groupby用法有误,不需要嵌套布尔索引,直接传入分组列名列表即可。要实现按date和ticker分组后对ret降序排序,有两种常用方式:
方式一:分组后每组内排序
# 分组后对每组的ret降序排序,最后重置索引消除分组带来的层级 test_ret_stacked.groupby(['date', 'ticker']).apply(lambda x: x.sort_values(by='ret', ascending=False)).reset_index(drop=True)
方式二:全局排序(更高效)
如果需求只是让相同date和ticker的行按ret降序排列,直接全局排序的效果一致且性能更好:
test_ret_stacked.sort_values(by=['date', 'ticker', 'ret'], ascending=[True, True, False])
2. 在Stack Overflow展示DataFrame的正确方式
不要只放截图,建议用文本格式提供样本数据:
- 在Jupyter Notebook中执行
test_ret_stacked.head().to_markdown(),复制输出的Markdown表格粘贴到提问里; - 或者执行
test_ret_stacked.sample(5).to_dict(),把生成的字典贴出来,方便其他人复现你的数据环境。
内容的提问来源于stack exchange,提问作者korin
相关产品推荐
相关产品推荐

