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

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

如何將熊貓列動態轉換為行

如何將熊貓列動態轉換為行

慕姐8265434 2022-06-02 17:53:27
我在熊貓中有以下數據框code   tank  noz_sale_cumsum  noz_1_sub  noz_2_sub   noz_1_avg   noz_2_avg  noz_1_flag  noz_2_flag 123    1     1234             12         23          23.23       32.45      short       ok                123    2     1200             13         53          33.13       22.45      excess      ok            例如noz_1_sub, noz_2_sub, noz_1_avg, noz_2_avg, noz_1_flag and noz_2_flag動態生成的列。我想要的數據框將跟隨。code  tank  noz_no   noz_sale_cumsum  noz_sub   noz_avg   noz_flag123   1     1        1234             12        23.23     short123   1     2        1234             23        32.45     ok123   2     1        1200             13        33.13     excess123   2     2        1200             53        22.45     ok我正在關注熊貓。first I am getting all dynamic columns in different arrayscols_sub = [cols for cols in df.columns if re.search('noz_\d+_sub', cols)]cols_avg = [cols for cols in df.columns if re.search('noz_\d+_avg', cols)]cols_flag = [cols for cols in df.columns if re.search('noz_\d+_flag', cols)]final_df = df.pivot_table(index=['code', 'tank', 'noz_sale_cumsum'], columns=[cols_sub, cols_avg, cols_flag], values=[]).reset_index()      我不確定值列以及如何從noz類似列中提取數字并將其放在noz_no列下。任何幫助表示贊賞。
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

您可以使用melt將所有內容轉換為行,然后用于pivot_table將某些行轉換回列。


a = df.melt(id_vars=['code', 'tank', 'noz_sale_cumsum'])

a['noz_no'] = a.variable.map(lambda x: x.split('_')[1])

a['kpi'] = a.variable.map(lambda x: 'noz_' + x.split('_')[2])

http://img1.sycdn.imooc.com//629888b30001278c09320229.jpg

a.pivot_table(

    values='value',

    index=['code', 'tank', 'noz_sale_cumsum', 'noz_no'],

    columns=['kpi'], aggfunc='first'

).reset_index()

http://img1.sycdn.imooc.com//629888be0001b69710300239.jpg

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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