簡體   English   中英

如何在 python 中將行值轉換為列名和與列值相同的列名?

[英]How to convert row values as column names and same column names as column values in python?

我想將行值轉換為列名,這些列名將是列值。 我已經嘗試過使用 pivot,但它沒有提供所需的 output。

Data:
col1   col2   col3 col4
x1      y1      z1   a1
x1      y1      z1    a2
x1      y1      z1    a3

我試過如下:

Data.pivot(columns='Col4', values='col4')

Output:
a1  a2   a3
a1 NAN   NAN
NAN a2   NAN
NAN  NAN  a3

Desired output:

col1 col2 col3  a1  a2 a3
x1     y1   z1  a1  a2 a3

您可以使用pivot ,但您需要指定index參數以保留“col1”、“col2”、“col3”。 一旦你這樣做了,你可以稍微清理一下 dataframe 以獲得你想要的結果。

out = (df.pivot(index=["col1", "col2", "col3"], columns="col4", values="col4")
         .rename_axis(columns=None)
         .reset_index())

print(out)
  col1 col2 col3  a1  a2  a3
0   x1   y1   z1  a1  a2  a3

腳步

  • pivot(...) : pivot dataframe 根據需要。 這使得“col1”、“col2”和“col3”的MultiIndex 然后是“col4”值的實際列和值
  • rename_axis(columns=None) : pivot使列成為具有名稱的Index object。 我發現這個名字讓人們無法調整 dataframe 的表示方式。 在這里,我從列Index中刪除了名稱,以便可以表示 OP 的期望
  • 如前所述, reset_index() - pivot生成“col1”、“col2”和“col3”的MultiIndex 我們在這里使用reset_index()來獲取這些值並將其插入到DataFrame的實際數據中,而不是作為MultiIndex

暫無
暫無

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

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