2016-12-07 40 views
1

我有一個數據集:獲取從透視型熊貓數據框中的列名,而不會對原始列表的列名

a b c 
99-01-11 8 367235 
99-01-11 5 419895 
99-01-11 1 992194 
99-03-23 4 419895 
99-04-30 1 992194 
99-06-02 9 419895 
99-08-08 2 367235 
99-08-12 3 419895 
99-08-17 10 992194 
99-10-22 3 419895 
99-12-04 4 992194 
00-03-04 2 367235 
00-09-29 9 367235 
00-09-30 9 367235 

我使用下面的代碼改成透視表:

df = (pd.read_csv('orcs.csv')) 

df_wanted = pd.pivot_table(

df, 

index=['c'], 

columns=['a'], 

values=['b'] 

)} 

我的目標:我試圖獲取數據透視表中列名稱的列表。換句話說,我試圖得到這個:

['1999-01-11','1999-01-11','1999-01-11','1999-03-23','1999 -04-30' , '1999年6月2日', '1999年8月8日']

我嘗試使用這段代碼:

y= df_wanted.columns.tolist() 

..但是這給了我一個清單('c','00 -03-04'),('c','00 -09-29'),('c','''','''''''''''''''') ('c','99 -04-23'),('c','99 -03-23'),('c','99-0-04-30'), ('c','99-06-02'),('c','99-08-08'),('c','99-08-12'),('c','99 - 08-17'),('c','99-10-22'),('c','99 -12-04' )]

我試圖刪除 '以各種方式C',如

def remove_values_from_list(the_list, val): 
     while val in the_list: 
      the_list.remove(val) 
remove_values_from_list(y, 'c') 

,但有沒有運氣。有誰知道如何解決這個問題? PS。保留列表的順序很重要,因爲我將它用作線圖的y值數組。

非常感謝。

回答

1

最好先省略[]pivot_table爲避免MultiIndex列,然後使用tolist()採用鑄造到string

df_wanted = pd.pivot_table(df,index='c',columns='a',values='b') 
#print (df_wanted) 

print (df_wanted.columns.astype(str).tolist()) 
['1999-01-11', '1999-03-23', '1999-04-30', '1999-06-02', '1999-08-08', 
'1999-08-12', '1999-08-17', '1999-10-22', '1999-12-04', 
'2000-03-04', '2000-09-29', '2000-09-30'] 
+0

這完美地工作。我也很感激你很快回答了這個問題,並且很清楚,有禮貌。謝謝你保存我的皮膚。 – oymonk

+0

謝謝你的接受!另一種解決方案可以是選擇第二級多指標,但它更復雜。美好的一天! – jezrael