如何根据列值对 Pandas DataFrame 进行排序?

时间:2021-03-25 18:19:22

标签: python pandas dataframe

我正在执行图像分析,其中输出具有以下格式: format 1

其中“切片”指的是哪个样本对应

但我需要它像这样

format 2

其中每一行对应一个样本

我试过这个代码:

df['g'] = (df.groupby('Slice').cumcount() + 1).astype(str)
df1 = df.set_index(['Slice','g']).unstack()
df1.sort_index(axis=1,level=1, inplace=True)
df1.columns = [''.join(col) for col in df1.columns]
df1.reset_index(inplace=True)
df1 = df1.set_index("Slice")

但它对每个样本的第一个值进行分组,我不需要它,我不知道如何修复它。

1 个答案:

答案 0 :(得分:0)

试试这个:

#dataframe
data = {
    'mean': np.random.randint(1590, 1650, 6),
    'slice': [1, 1, 1, 2, 2, 2]
}
df = pd.DataFrame(data)

使用 groupbypivot

df['col'] = (df.groupby('slice', as_index=False)['slice'].cumcount()+1).astype(str).radd('Mean')
df.pivot(index='slice', columns='col').droplevel(axis=1, level=0)

输出:

col     Mean1   Mean2   Mean3
slice           
1       1646    1621    1620
2       1630    1632    1621
相关问题