2017-09-11 31 views
-1

我有一個excel文件,其中包含運動欄,其中可以使用體育名稱和運動員姓名。如果我點擊體育名稱,運動員姓名即將消失,即體育名稱是體育名稱的兒童。如何從python熊貓的Excel文檔中讀取數據透視表?

請看看下面的數據: enter image description here

如果我點擊板球那麼拉梅什,蘇雷什,馬赫什名稱消失,即板球是拉梅什,蘇雷什的父母和馬赫什喜歡同足球的Pankaj的父,riyansh,suraj。

我想讀這個Excel文檔,並在python熊貓數據框中進行轉換。我試圖用pandas pivot_table來讀取它,但我沒有取得任何成功。

我試着讀這個excel表並轉換成數據框。

df = pd.read_excel("sports.xlsx",skiprows=7,header=0) 
d = pd.pivot_table(df,index=["sports"]) 
print d 

但我發現了在單個列所有體育價值觀我想通過體育名分裂它和它對應運動的人的名字。

預期輸出:

sports_name player_name age address 
cricket  ramesh  20 aaa 
cricket  suresh  21 bbb 
cricket  mahesh  22 ccc 
football pankaj  24 eee 
football riyansh  25 fff 
football suraj   26 ggg 
basketball rajesh  28 iii 
basketball abhijeet  29 jjj 
+2

你試過的東西,但它沒有工作被替換NaN的?你嘗試了什麼?什麼地方出了錯? – khelwood

+0

這看起來更像是格式不正確的表格。你的足球'年齡'是'23' ... – zipa

回答

0

pandas.pivot_table是有支持的數據分析,並幫助您創建一個類似於出類拔萃,不讀取Excel數據透視表的數據透視表。

以DataFrame的形式創建電子表格樣式的數據透視表。數據透視表中的級別將被存儲在索引多指標對象(分層索引),結果列數據幀從文檔

>>> df 
    A B C  D 
0 foo one small 1 
1 foo one large 2 
2 foo one large 2 
3 foo two small 3 
4 foo two small 3 
5 bar one large 4 
6 bar one small 5 
7 bar two small 6 
8 bar two large 7 


>>> table = pivot_table(df, values='D', index=['A', 'B'], 
...      columns=['C'], aggfunc=np.sum) 
>>> table 
      small large 
foo one 1  4 
    two 6  NaN 
bar one 5  4 
    two 6  7 

我們幫助您對這個問題,我創建了一個示例數據集和一個數據透視表。

然後將excel表讀入熊貓數據框。該數據幀包含使用df.fillna(method='ffill')

enter image description here

df = pd.read_excel(pviotfile,skiprows=12,header=0) 
df=df.fillna(method='ffill') 
print (df) 

輸出

 Sports  Name Address Age 
0 basketball Abhijit 129 ABC 20 
1 basketball Rajesh 128 ABC 20 
2  Cricket Mahesh 123 ABC 20 
3  Cricket Ramesh 126 ABC 20 
4  Cricket Suresh 124 ABC 20 
5 Football Riyash 125 ABC 20 
6 Football suraj 127 ABC 20