【问题标题】:Pandas: going from long to wide format in a dataframePandas:在数据框中从长格式到宽格式
【发布时间】:2021-05-12 06:26:35
【问题描述】:

在 pandas 中,我无法从长格式转换为宽格式。从宽到长的例子很多,但我没有找到一个从长到宽的例子。 我正在尝试重新格式化我的数据框,pivot、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”的方法,并将其构建为一个矩阵。提前谢谢你!

【问题讨论】:

  • 使用示例输入数据作为文本更新您的问题,它几乎是标记。也适用于所需的布局。图片/图片不能用于演示如何解决您的问题
  • 考虑将您的数据粘贴为文本,而不是截屏。

标签: python pandas dataframe pivot


【解决方案1】:

根据您的尝试,我认为这可能有效:

df2 = df.pivot(['Peptide', 'Charge', 'Protein'], columns='Sample', values='Intensity').reset_index()

之后,如果要从列轴中删除名称:

df2 = df2.rename_axis(None, axis=1)

【讨论】:

    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多