2016-05-26 59 views
2

假設我有這樣一個數據幀:大熊貓數據框中包含列表

lst1 = [[1,3,4,5],[1,2,3,3],[2,3,4,5],[3,4,5,5]] 
lst2 = [[1,2,3,1],[1,4,1,2],[3,3,1,5],[2,4,1,5]] 
lst3 = [[1,2,3,3],[3,2,1,2],[1,3,1,4],[2,4,3,5]] 
percentile_list = pd.DataFrame({'lst1Tite' : lst1, 
'lst2Tite' : lst2, 
'lst3Tite':lst3 
}) 

> precentile_list  
     lst1Tite lst2Tite lst3Tite 
0 [1, 3, 4, 5] [1, 2, 3, 1] [1, 2, 3, 3] 
1 [1, 2, 3, 3] [1, 4, 1, 2] [3, 2, 1, 2] 
2 [2, 3, 4, 5] [3, 3, 1, 5] [1, 3, 1, 4] 
3 [3, 4, 5, 5] [2, 4, 1, 5] [2, 4, 3, 5] 

現在我想提取0行,並打開排0作爲這樣一個數據幀:

> percentile_0 
col1 col2 col3 col4 
0 1 3 4 5 
1 1 2 3 1 
2 1 2 3 3 

哪有我去做?

如果我想將precentile_list變成像percentile_0這樣的數據框呢?

回答

1

您可以使用apply和應用上該行的Series構造函數:

In [17]: 
percentile_list.iloc[0].apply(pd.Series) 

Out[17]: 
      0 1 2 3 
lst1Tite 1 3 4 5 
lst2Tite 1 2 3 1 
lst3Tite 1 2 3 3 

如果你與所需的輸出特別迷戀:

In [20]: 
pd.DataFrame(percentile_list.iloc[0].apply(pd.Series).values, columns = ['col1','col2','col3','col4']) 

Out[20]: 
    col1 col2 col3 col4 
0  1  3  4  5 
1  1  2  3  1 
2  1  2  3  3 

您可以將每個DF存儲在字典用你想要的鑰匙命名:

In [41]: 
d={} 
for l in percentile_list.index: 
    d['percentile_' + str(l)] = pd.DataFrame(percentile_list.loc[l].apply(pd.Series).values, columns = ['col1','col2','col3','col4']) 
d 

Out[41]: 
{'percentile_0': col1 col2 col3 col4 
0  1  3  4  5 
1  1  2  3  1 
2  1  2  3  3, 'percentile_1': col1 col2 col3 col4 
0  1  2  3  3 
1  1  4  1  2 
2  3  2  1  2, 'percentile_2': col1 col2 col3 col4 
0  2  3  4  5 
1  3  3  1  5 
2  1  3  1  4, 'percentile_3': col1 col2 col3 col4 
0  3  4  5  5 
1  2  4  1  5 
2  2  4  3  5} 

這是第一個關鍵:

In [42]: 
d['percentile_0'] 

Out[42]: 
    col1 col2 col3 col4 
0  1  3  4  5 
1  1  2  3  1 
2  1  2  3  3 
+0

謝謝EdChum,它的工作!但是如何將整個percentile_list變成像沒有循環的percentile_0這樣的數據框呢?我的意思是按行排列percentile_0,percentile_1,percentile_2,...? – jjdblast