簡體   English   中英

Pandas:在 dataframe 中從長格式變為寬格式

[英]Pandas: going from long to wide format in a dataframe

在 pandas 中,我無法從長格式轉換為寬格式。 從寬到長的例子很多,但我沒有找到一個從長到寬的例子。 我正在嘗試重新格式化我的 dataframe 和 pivot,groupby,unstack 對我的用例來說有點混亂。

這就是我想要的樣子。 這些數字實際上是第二張圖像中的強度列。 在此處輸入圖像描述

這就是現在的樣子

在此處輸入圖像描述

我試圖建立一個基於肽、電荷和蛋白質的 MultiIndex。 然后我嘗試基於該多索引 pivot ,並將所有樣本及其強度保持為值:

df.set_index(['Peptide', 'Charge', 'Protein'], append=False)
df.pivot(index=df.index, columns='Sample', values='Intensity')

當然,這不起作用,因為我的索引現在是 3 的組合,而不是 dataframe 中的實際列。

它告訴我

KeyError: None of [RangeIndex(start=0, stop=3397898, step=1)] are in the [columns]

我也嘗試分組,但我不確定如何從長格式移回寬格式。 我對 dataframe 的思維方式很陌生,我想學習如何正確地做到這一點。 我很想用 4 個 for 循環來做一個老式的類似“java”的方法,並將其構建為一個矩陣。 提前謝謝你!

我認為根據您的嘗試,這可能有效:

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

之后,如果要從列軸中刪除名稱:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM