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

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

如何一次旋轉具有多列的熊貓數據框(時間序列)?

如何一次旋轉具有多列的熊貓數據框(時間序列)?

慕絲7291255 2023-02-12 19:14:46
我有一個pandas像下面這樣的日期框,作為DATETIME索引:                                  ID      Val1       Val2DATETIME                                                2019-01-18 10:35:00                A      482.84387  439.679422019-01-18 10:35:00                B       -5.30216   20.222472019-01-18 10:40:00                A     -790.63989 -810.000002019-01-18 10:40:00                B      257.00000  270.554902019-01-18 10:45:00                A       10.54820    5.646592019-01-18 10:45:00                B      -85.50000  -89.00000請注意,DATETIME對于 s 重復了ID。我的目標是將其轉換為類似以下內容(如果可能,列名根據 ID 更改):                                   A_Val1       A_Val2      B_Val1     B_Val2DATETIME                                                2019-01-18 10:35:00                482.84387   439.67942      -5.30216   20.222472019-01-18 10:40:00               -790.63989  -810.00000     257.00000  270.554902019-01-18 10:45:00                 10.54820     5.64659     -85.50000  -89.00000我用過pandas.pivot,但沒用。df_2= df_1.pivot(index=df_1.index, columns='ID', values=['Val1', 'Val2'])錯誤是:"DatetimeIndex(['2019-01-18 10:35:00', '2019-01-18 10:35:00',\n  ....],\n  dtype='datetime64[ns]', name='DATETIME', freq=None) not in index"我不確定從那里去哪里。如果您能提供幫助,請提前致謝。
查看完整描述

2 回答

?
森林海

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

使用DataFrame.reset_index,傳遞DATETIMEindex參數并最后MultiIndexf-strings 展平:


df_2= df_1.reset_index().pivot(index='DATETIME', columns='ID', values=['Val1', 'Val2'])

df_2.columns = df_2.columns.map(lambda x: f'{x[1]}_{x[0]}')

print (df_2)

                        A_Val1     B_Val1     A_Val2     B_Val2

DATETIME                                                       

2019-01-18 10:35:00  482.84387   -5.30216  439.67942   20.22247

2019-01-18 10:40:00 -790.63989  257.00000 -810.00000  270.55490

2019-01-18 10:45:00   10.54820  -85.50000    5.64659  -89.00000


查看完整回答
反對 回復 2023-02-12
?
滄海一幻覺

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

DataFrame.set_index另一種使用and 的方法DataFrame.unstack

df1 = df.set_index('ID', append=True).unstack()

df1.columns = df1.columns.map(lambda c: f'{c[1]}_{c[0]}')

結果:


# print(df1)

                        A_Val1     B_Val1     A_Val2     B_Val2

DATETIME                                                       

2019-01-18 10:35:00  482.84387   -5.30216  439.67942   20.22247

2019-01-18 10:40:00 -790.63989  257.00000 -810.00000  270.55490

2019-01-18 10:45:00   10.54820  -85.50000    5.64659  -89.00000


查看完整回答
反對 回復 2023-02-12
  • 2 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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