2015-06-17 71 views
1

我有一個值列表。我有一個數據框,其中一列包含相同的值。如何訂購數據框相同的方式列表訂購?根據列表排序數據框,與熊貓中的一列匹配

列表例如:

[3, 
4, 
... 
21, 
23, 
25, 
26] 

數據幀例如:

 0 1 2 
0 ND 3 0/1 
1 ND 4 0/1 
... 
11 ND 21 0/1 
12 ND 23 0/1 
13 ND 25 0/1 
14 ND 26 0/1 

我需要根據列表確認表排序。我需要匹配的列是數據框中的第1列。

編輯:有順序排序代替,因爲這類詞可能誤導

+0

你只需要*確保*它根據列表排序或者你需要真正爲了它根據呢? (我認爲它是後者,但它從不會受到傷害) – TomCho

+0

確保它根據列表進行排序。如果不是這樣。 – YKY

+0

您正在尋找這樣的事情:http://stackoverflow.com/questions/23279238/custom-sorting-with-pandas或http://stackoverflow.com/questions/13838405/custom-sorting-in-pandas-dataframe – EdChum

回答

3

您可以根據您的列表上創建一個數據幀,並與您的數據幀

a = [3,4,1] 
df_a = pd.DataFrame({'VAL2' : a}) 
df_b = pd.DataFrame({'VAL1' :[0,1,2,3,4,5,6]}) 
pd.merge(df_a, df_b,left_on='VAL2',right_on='VAL1',how='outer') 
+0

感謝它的工作 – YKY

0

也許這個合併:

df['order'] = df[1].apply(lambda v: l.index(v)) 
df_you_wanted = df.sort('order')[[0,1,2]] 

這裏l是你的列表,df是你的數據框。