在 Pandas 中,我无法从长格式转换为宽格式。从宽到长的例子很多,但我没有找到从长到宽的例子。 我正在尝试重新格式化我的数据框和数据透视、groupby、unstack 对我的用例来说有点混乱。
现在是这样
我试图建立一个基于肽、电荷和蛋白质的 MultiIndex。然后我尝试根据该多索引进行透视,并将所有样本及其强度保留为值:
df.set_index(['Peptide', 'Charge', 'Protein'], append=False)
df.pivot(index=df.index, columns='Sample', values='Intensity')
当然,这不起作用,因为我的索引现在是 3 的组合,而不是数据框中的实际列。
它告诉我
KeyError: None of [RangeIndex(start=0, stop=3397898, step=1)] are in the [columns]
我也尝试分组,但我不确定如何从长格式移回宽格式。我对数据框的思维方式很陌生,我想学习如何正确地做到这一点。 对我来说,用 4 个 for 循环做一个老式的“java”式方法并将其构建为矩阵是非常诱人的。提前谢谢你!
答案 0 :(得分:0)
根据您的尝试,我认为这可能会奏效:
df2 = df.pivot(['Peptide', 'Charge', 'Protein'], columns='Sample', values='Intensity').reset_index()
之后,如果要从列轴上删除名称:
df2 = df2.rename_axis(None, axis=1)