如何基于索引和列值重排Pandas Dataframe实现同组varde值并排
解决方案
你可以通过添加分组累计计数列,再做宽表转换实现需求,完整可运行代码如下:
import pandas as pd # 第一步:将DataFrame原有索引保存为单独列,用于后续匹配 df = df.reset_index(names='orig_idx') # 第二步:对相同klass、相同原索引的行添加顺序标记,区分同组下的多个varde df['seq'] = df.groupby(['klass', 'orig_idx']).cumcount() # 第三步:转换为宽表,匹配目标结构 result = df.pivot(index=['orig_idx', 'klass'], columns='seq', values='varde').reset_index(level='klass') # 可选操作:修改列名(注:pandas默认不推荐重名列,如需和你给出的目标完全一致可以执行这行) result.columns = ['klass', 'varde', 'varde'] # 可选操作:如果不需要原索引作为行标识,可以删掉 result = result.reset_index(drop=True)
注意:你给出的目标输出最后一行第二个值
0.248085属于笔误,实际运行代码得到的正确结果为90.248085。
内容的提问来源于stack exchange,提问作者Sara Sommarsjö
相关产品推荐
相关产品推荐

