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

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

大熊貓“樞軸”操作的完全相反

大熊貓“樞軸”操作的完全相反

MMTTMM 2021-06-14 09:06:51
我有一個粗略格式的熊貓數據框print(df)    Time  GroupA  GroupB  Value1  Value20  100.0     1.0     1.0    18.0     0.01  100.0     1.0     2.0    16.0     0.02  100.0     2.0     1.0    18.0     0.03  100.0     2.0     2.0    10.0     0.0其中Time是一個計數變量/時間戳,GroupA和GroupB是類別,以及Value1和Value2是數值量。此代碼段創建了一個模型數據框:import numpy as npvalues = np.zeros(shape=(4,5))values[:,0] = 100values[:,1] = [1]*2 + [2]*2values[:,2] = [1,2]*2values[:,3] = np.random.randint(low=10,high=20,size=(4))df = pd.DataFrame(values,columns=['Time','GroupA','GroupB','Value1','Value2'])加載一些數據后,我想計算并填寫Value2. 當它發生時(順便說一句,因為Value2是Value1每個現有 ( GroupA, GroupB) 對中的時間序列函數),我發現通過首先將我的數據轉換為以下形式來計算這些值最容易:df_pivot = df.pivot_table(index='Time',columns=['GroupA','GroupB'],values=['Value1','Value2'], fill_value=0.0)然后在一些不相關的代碼之后我填寫了值print(df_pivot)       Value1             Value2            GroupA    1.0     2.0        1.0     2.0    GroupB    1.0 2.0 1.0 2.0    1.0 2.0 1.0 2.0Time                                        100.0      13  16  16  10     27  20  28  20現在我想將其“反透視”為df. 我可以通過循環df、查找 中的值df_pivot并填充它來手動執行此操作,但我更喜歡使用內置函數。嘗試使用 的變體時df.melt,由于df_pivot的分層列存在問題,我無法執行此反轉。我最好的嘗試是dfm = df_pivot.reset_index().melt(id_vars="Time")dfm.columns.values[1] = "HACK"dfm = dfm.pivot_table(index=["Time","GroupA","GroupB"],columns="HACK",values="value").reset_index()產生數據框print(dfm)HACK   Time  GroupA  GroupB  Value1  Value20     100.0     1.0     1.0      13      271     100.0     1.0     2.0      16      202     100.0     2.0     1.0      16      283     100.0     2.0     2.0      10      20這有效,但并不讓我覺得是最好的解決方案,或者非常便攜(為什么melt會產生“NaN”列名?為什么我要手動查找該列的索引并重命名它?為什么我必須樞軸以撤消樞軸?)雖然嘗試并查看文檔和示例以尋找替代方案,但我不知所措。該melt函數有一個col_level看起來應該有幫助的參數,但我為此使用的任何有效值只會導致數據丟失(丟失“時間”、“組 A”或“組 B”數據)。
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我認為stack更直接


df_pivot.stack([1,2]).reset_index()

Out[8]: 

    Time  GroupA  GroupB  Value1  Value2

0  100.0     1.0     1.0      13       0

1  100.0     1.0     2.0      13       0

2  100.0     2.0     1.0      12       0

3  100.0     2.0     2.0      11       0


查看完整回答
反對 回復 2021-06-15
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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