如何将分组后的DataFrame还原为普通格式?股票数据处理场景
解决方案
你看到的“同一ID仅首行显示,其余行ID为空”大概率是pandas的显示优化或者原始数据的小问题,不是筛选逻辑出错,给你两种针对性的解决方法:
情况1:ID是DataFrame的索引
如果之前你把ID设成了索引(比如执行过df.set_index('ID')),pandas在显示时会自动隐藏连续重复的索引值,看起来像是空的。直接把索引还原成普通列就行:
df = df.reset_index()
执行后每行都会显示对应的ID值,完全还原成普通格式。
情况2:ID是普通列但存在空值
如果ID本身是列,但同一ID的后续行确实是空值(原始数据的问题),因为你已经筛选出了完整的股票组(同一ID的所有行都保留),可以用向前填充快速补全:
df['ID'] = df['ID'].ffill()
ffill()会把同一ID组的首行值填充到后续所有空行,效率极高,完全适配1亿行的大数据量。
补充:你之前用的df[df['RET'].notna().groupby('ID').transform('all')]筛选逻辑是正确的,它确实能保留所有收益率无缺失的股票的全部记录,不用怀疑这个步骤的正确性。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

