2017-12-16 10 views
1

pandasデータフレームのインデックスを並べ替える/並べ替える(ソートする必要はありません)方法を教えてください。pandasデータフレームのインデックスを並べ替える/並べ替える(ソートする必要はありません)方法を教えてください。

私は、次のデータフレームを持っている:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7], 
        'B': [0, 1, 0, 2, 1, 7, 1]}, 
        index=['Sat', 'Tue', 'Sun', 'Fri', 
         'Wed', 'Mon', 'Thu']) 

与える:

 A B 
Sat 1 0 
Tue 2 1 
Sun 3 0 
Fri 4 2 
Wed 5 1 
Mon 6 7 
Thu 7 1 

私はすなわち、日、月、火、水、木、(曜日によってインデックスを注文したいです金、土)。 DFのためのアルファベット順にソートされたインデックスに

 A B 
Sun 3 0 
Mon 6 7 
Tue 2 1 
Wed 5 1 
Thu 7 1 
Fri 4 2 

しかし、使用してdf.sort_index()の結果:再編成された/並べ替えのインデックスを持つデータフレームは、次のようになります。

データフレームインデックスの順序を明示的に指定する方法を教えてください。

私は考えることができるソリューションは、データフレームの作成中にリストとして必要なインデックスの順序を渡すことです:

df = pd.DataFrame(df, index=['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri']) 

別のデータフレームを作成せずにこれを行うための別の方法は何ですか?

ありがとうございます。

答えて

0

あなたは、あなたがそれらをしたいという順序でlocを使用し、それをインデックスのリストを与えることができます:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7], 
        'B': [0, 1, 0, 2, 1, 7, 1]}, 
        index=['Sat', 'Tue', 'Sun', 'Fri', 
         'Wed', 'Mon', 'Thu']) 
df = df.loc[['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], :] 
df 
#  A B 
# Sun 3 0 
# Mon 6 7 
# Tue 2 1 
# Wed 5 1 
# Thu 7 1 
# Fri 4 2 
# Sat 1 0 
+0

@ralphqqはあなたが後にしている何本ですか? –

+0

はい。これは機能します。 – ralphqq

0

あなたが最初の列だけで、あなたのデータフレーム内のレジスタとして「週」を追加する必要があります。

# ascending 
df.sort_values('week') 
# reverse ascending 
df.sort_values('week', ascending=False) 

それとも、この時点では、より簡単なことができます

df.sort_index(inplace=True) 
print(df.to_string()) 
関連する問題