我有一個具有多級列索引的資料框。請參閱下面的代碼來構建 DataFrame。我已將所有資料替換為亂數,以防止敏感資訊泄露。
import pandas as pd
import numpy as np
import random
pd.options.display.max_columns=None
multi_index = [('Part Information', 'Brand'),
('Part Information', 'Model'),
('Part Information', 'Part Grouping'),
('Part Information', 'Part Desc'),
('Part Information', 'VWG Part Number(s)'),
('Part Information', 'VWG Retail Price'),
('Part Information', 'Trade Discount'),
('Part Information', 'VWG Trade Price'),
('Part Information', 'Is VWG Part Common or Unique?'),
('Part Information', 'VWG Volume'),
('Part Information', 'Competitor'),
('Q1 2018', 'Competitor Part Number'),
('Q1 2018', 'Competitor Brand'),
('Q1 2018', 'Competitor Retail Price'),
('Q1 2018', 'Competitor Trade Price'),
('Q2 2018', 'Competitor Part Number'),
('Q2 2018', 'Competitor Brand'),
('Q2 2018', 'Competitor Retail Price'),
('Q2 2018', 'Competitor Trade Price'),
('Q3 2018', 'Competitor Part Number'),
('Q3 2018', 'Competitor Brand'),
('Q3 2018', 'Competitor Retail Price'),
('Q3 2018', 'Competitor Trade Price'),
('Q4 2018', 'Competitor Part Number'),
('Q4 2018', 'Competitor Brand'),
('Q4 2018', 'Competitor Retail Price'),
('Q4 2018', 'Competitor Trade Price'),
('Q2 2019', 'Competitor Part Number'),
('Q2 2019', 'Competitor Brand'),
('Q2 2019', 'Competitor Retail Price'),
('Q2 2019', 'Competitor Trade Price'),
('Q3 2019', 'Competitor Part Number'),
('Q3 2019', 'Competitor Brand'),
('Q3 2019', 'Competitor Retail Price'),
('Q3 2019', 'Competitor Trade Price'),
('Q4 2019', 'Competitor Part Number'),
('Q4 2019', 'Competitor Brand'),
('Q4 2019', 'Competitor Retail Price'),
('Q4 2019', 'Competitor Trade Price')]
pd.MultiIndex.from_tuples(multi_index)
df = pd.DataFrame(np.random.randn(10, 39))
df.columns = pd.MultiIndex.from_tuples(multi_index)
輸出資料框顯示在下面的螢屏截圖中(對多個螢屏截圖表示歉意)。


如您所見,有一些重復的列我想取消透視。此外,我想添加一'QUARTER'列而不是多索引列結構。所以我希望按如下方式操作資料框:
cols = ['Brand', 'Model', 'Part Grouping', 'Part Desc', 'VWG Part Number(s)',
'VWG Retail Price', 'Trade Discount', 'VWG Trade Price',
'Is VWG Part Common or Unique?', 'VWG Volume', 'Competitor', 'QUARTER',
'Competitor Part Number', 'Competitor Brand', 'Competitor Retail Price',
'Competitor Trade Price']
df_new = pd.DataFrame(np.random.randn(10, 16), columns=cols)
df_new.loc[0:4, 'QUARTER'] = 'Q1 2018'
df_new.loc[4:8, 'QUARTER'] = 'Q2 2018'
df_new.loc[9, 'QUARTER'] = '...'


如何取消透視列層次結構級別 0 中的列類別???我使用pd.melt()還是pd.stack()/unstack()
我將不勝感激任何幫助,如果您需要更多資訊,請告訴我。
uj5u.com熱心網友回復:
IIUC,您可以將 DataFrame 一分為二,將右側部分拆開并加入:
(df['Part Information']
.join(df.drop(columns='Part Information', level=0)
.stack(0)
.rename_axis((None, 'Quarter'))
.reset_index(1))
)
輸出:
Brand Model Part Grouping Part Desc VWG Part Number(s) VWG Retail Price Trade Discount VWG Trade Price Is VWG Part Common or Unique? VWG Volume Competitor Quarter Competitor Brand Competitor Part Number Competitor Retail Price Competitor Trade Price
0 1.163696 0.789552 -1.673217 -0.256159 0.299669 -1.918318 1.741297 -0.005605 1.085802 -0.775250 -0.800543 Q1 2018 0.668761 -0.266060 -1.018759 -0.755990
0 1.163696 0.789552 -1.673217 -0.256159 0.299669 -1.918318 1.741297 -0.005605 1.085802 -0.775250 -0.800543 Q2 2018 1.386664 -1.832704 1.325866 -0.123179
0 1.163696 0.789552 -1.673217 -0.256159 0.299669 -1.918318 1.741297 -0.005605 1.085802 -0.775250 -0.800543 Q2 2019 -0.612474 -0.250223 -1.299746 -0.870354
0 1.163696 0.789552 -1.673217 -0.256159 0.299669 -1.918318 1.741297 -0.005605 1.085802 -0.775250 -0.800543 Q3 2018 -1.553103 1.462980 1.578326 0.417629
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455781.html
上一篇:使用鏈式規則洗掉熊貓中的一行
