亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Pandas Dataframe 中將行轉換為列

如何在 Pandas Dataframe 中將行轉換為列

UYOU 2022-06-28 15:14:13
我有一個格式如下的數據框:DF1:原始數據框的形狀為 (1200, 9)這是示例數據框    x1      x2      x3     Group    1.0     0.0     0.0     A    0.0     0.0     0.0     A    0.0     3.0     11.0    A    0.0     0.0     0.0     A    0.0     1.0     0.0     A    0.0     0.0     0.0     E    0.0     0.0     0.0     E    0.0     0.0     0.0     E    0.0     0.0     6.0     E    0.0     0.0     0.0     E我想要以下格式的輸出:DF_Res:Group    A    E   x1  1.0  0.0   x2  0.0  0.0   x3  0.0  0.0   x1  0.0  0.0   x2  0.0  0.0   x3  0.0  0.0   x1  0.0  0.0   x2  3.0  0.0   x3  11.0  0.0   x1  0.0  0.0   x2  0.0  0.0   x3  0.0  6.0   x1  0.0  0.0   x2  1.0  0.0   x3  0.0  0.0我想轉換我的列,使它們成為組,組成為列標題。
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

如果想要聚合值,例如按sum組:


df1 = df.groupby('Group').sum().T.rename_axis(None, axis=1).rename_axis('Group').reset_index()

print (df1)

  Group    A    E

0    x1  0.0  0.0

1    x2  0.0  0.0

2    x3  0.0  0.0

3    x4  0.0  0.0

4    x5  0.0  0.0

5    x6  0.0  0.0

6    x7  0.0  0.0

7    x8  0.0  0.0

編輯:


df2 = df.set_index('Group').T.rename_axis(None, axis=1).rename_axis('Group').reset_index()

print (df2)

  Group    A    A    E    E    A

0    x1  0.0  0.0  0.0  0.0  0.0

1    x2  0.0  0.0  0.0  0.0  0.0

2    x3  0.0  0.0  0.0  0.0  0.0

3    x4  0.0  0.0  0.0  0.0  0.0

4    x5  0.0  0.0  0.0  0.0  0.0

5    x6  0.0  0.0  0.0  0.0  0.0

6    x7  0.0  0.0  0.0  0.0  0.0

7    x8  0.0  0.0  0.0  0.0  0.0

編輯1:


df = (df.set_index('Group')

        .groupby(level=0)

        .apply(lambda x: x.stack().reset_index(level=0, drop=True))

        .rename_axis(None)

        .rename_axis('Group', axis=1)

        .T

        .reset_index())


print (df)

   Group     A    E

0     x1   1.0  0.0

1     x2   0.0  0.0

2     x3   0.0  0.0

3     x1   0.0  0.0

4     x2   0.0  0.0

5     x3   0.0  0.0

6     x1   0.0  0.0

7     x2   3.0  0.0

8     x3  11.0  0.0

9     x1   0.0  0.0

10    x2   0.0  0.0

11    x3   0.0  6.0

12    x1   0.0  0.0

13    x2   1.0  0.0

14    x3   0.0  0.0


查看完整回答
反對 回復 2022-06-28
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

這有點“hacky”,但您需要創建一個單獨的索引來區分您的值。例如,多個值對應于A和x1。這就是我所說的:


df_new = df.set_index('Group')

df_new = df_new.groupby(df_new.index, as_index=False).apply(lambda x: x.stack().reset_index())

df_new.columns = ['Group', 'x', 'value']

df_new = df_new.droplevel(axis=0, level=0).set_index(['Group', 'x'], append=True).unstack('Group').droplevel(axis=1, level=0)

結果:


Group     A    E

x               

x1      1.0  0.0

x2      0.0  0.0

x3      0.0  0.0

x1      0.0  0.0

x2      0.0  0.0

x3      0.0  0.0

x1      0.0  0.0

x2      3.0  0.0

x3     11.0  0.0

x1      0.0  0.0

x2      0.0  0.0

x3      0.0  6.0

x1      0.0  0.0

x2      1.0  0.0

x3      0.0  0.0


查看完整回答
反對 回復 2022-06-28
  • 2 回答
  • 0 關注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號