2016-12-18 4 views
-1

私はこのリストを持っている:Pythonの:最初の行を除いてソート・リスト

[['Nom', 'Francais', 'Anglais', 'Maths'], ['Catherine', '9', '17', '9'], ['Karim', '12', '15', '11'], ['Rachel', '15', '15', '14'], ['Roger', '12', '14', '12'], ['Gabriel', '7', '13', '8'], ['Francois', '14', '8', '15'], ['Henri', '10', '12', '13'], ['Stephane', '18', '12', '8'], ['Karine', '9', '10', '10'], ['Marie', '10', '10', '10'], ['Claire', '15', '9', '12'], ['Marine', '12', '9', '12']] 

私は内の各リストの[0]要素のアルファベット順に、別の言葉で名前(または、でそれをソートしたいですリスト)しかし、私は最初のリスト(['Nom', 'Francais', 'Anglais', 'Maths'])を他の人とソートする必要はありませんしたい、どのようにそれを行うことができますか?

ありがとうございます!

+5

あなたが何かをしようとしましたか?最初の行はどういう意味ですか?リストの最初の要素ですか? – ettanany

+0

私は、「ノーム」、「フランセイ」、「アングレーズ」、「数学」を最初に残しておき、他の要素をソートしておきたいと思っています。 (私の悪い英語には申し訳ありません) –

+0

質問:ヘッダー情報をリスト自体に保存しているのはなぜですか? – chepner

答えて

0

あなたはレンジの割り当てを使用することができます。

>>> from pprint import pprint # just to have a nice display 
>>> data = [['Nom', 'Francais', 'Anglais', 'Maths'], ['Catherine', '9', '17', '9'], ['Karim', '12', '15', '11'], ['Rachel', '15', '15', '14'], ['Roger', '12', '14', '12'], ['Gabriel', '7', '13', '8'], ['Francois', '14', '8', '15'], ['Henri', '10', '12', '13'], ['Stephane', '18', '12', '8'], ['Karine', '9', '10', '10'], ['Marie', '10', '10', '10'], ['Claire', '15', '9', '12'], ['Marine', '12', '9', '12']] 
>>> pprint(data) 
[['Nom', 'Francais', 'Anglais', 'Maths'], 
['Catherine', '9', '17', '9'], 
['Karim', '12', '15', '11'], 
['Rachel', '15', '15', '14'], 
['Roger', '12', '14', '12'], 
['Gabriel', '7', '13', '8'], 
['Francois', '14', '8', '15'], 
['Henri', '10', '12', '13'], 
['Stephane', '18', '12', '8'], 
['Karine', '9', '10', '10'], 
['Marie', '10', '10', '10'], 
['Claire', '15', '9', '12'], 
['Marine', '12', '9', '12']] 
>>> data[1:] = sorted(data[1:]) 
>>> pprint(data) 
[['Nom', 'Francais', 'Anglais', 'Maths'], 
['Catherine', '9', '17', '9'], 
['Claire', '15', '9', '12'], 
['Francois', '14', '8', '15'], 
['Gabriel', '7', '13', '8'], 
['Henri', '10', '12', '13'], 
['Karim', '12', '15', '11'], 
['Karine', '9', '10', '10'], 
['Marie', '10', '10', '10'], 
['Marine', '12', '9', '12'], 
['Rachel', '15', '15', '14'], 
['Roger', '12', '14', '12'], 
['Stephane', '18', '12', '8']] 
0

個人的に、私はこのような何かをしたいです。しかし、それはあなたがパンダと半分快適だと仮定します。これにより、より多くのデータを柔軟に処理できます。

  Nom Francais Anglais Maths 
0 Catherine  9  17  9 
1  Claire  15  9 12 
2 Francois  14  8 15 
3  Gabriel  7  13  8 
4  Henri  10  12 13 
5  Karim  12  15 11 
6  Karine  9  10 10 
7  Marie  10  10 10 
8  Marine  12  9 12 
9  Rachel  15  15 14 
10  Roger  12  14 12 
11 Stephane  18  12  8 

、あなたはあなたの最も最近のコメントごとに.csvファイルが必要な場合は、その後、それは単純だが:生成

import pandas as pd 

nl = [['Nom', 'Francais', 'Anglais', 'Maths'], ['Catherine', '9', '17', '9'], ['Karim', '12', '15', '11'], ['Rachel', '15', '15', '14'], ['Roger', '12', '14', '12'], ['Gabriel', '7', '13', '8'], ['Francois', '14', '8', '15'], ['Henri', '10', '12', '13'], ['Stephane', '18', '12', '8'], ['Karine', '9', '10', '10'], ['Marie', '10', '10', '10'], ['Claire', '15', '9', '12'], ['Marine', '12', '9', '12']] 

df = pd.DataFrame(columns = nl[0]) 

for l, c in zip(nl[0], range(4)): 
    df[l] = [ r[c] for r in nl[1:] ] 

df.sort_values(by = 'Nom', inplace = True) 
df.reset_index(drop = True, inplace = True) 

df.to_csv('/directory/my_filename.csv', index = False) 
+0

のようにリストをスライスしなければなりません。これが悪い解決策だと思うなら、あなたの心を話してください。私はそれがOPがしたいことを正確にしていると確信しています。説明のない下への投票は、人々が関連する回答を投稿してサイト全体をドラッグすることを妨げている。 – pshep123

関連する問題