Csvファイルをインポートしてデータフレームを作成しました。そして、date列をdatetimeに変換し、それをインデックスにしました。しかし、インデックスを並べ替えると、望んだ結果が得られません
print(df.head())
df['Date'] = pd.to_datetime(df['Date'])
df.index = df['Date']
del df['Date']
df.sort_index()
print(df.head())
結果は次のとおりです。
Date Last
0 2016-12-30 1.05550
1 2016-12-29 1.05275
2 2016-12-28 1.04610
3 2016-12-27 1.05015
4 2016-12-23 1.05005
Last
Date
2016-12-30 1.05550
2016-12-29 1.05275
2016-12-28 1.04610
2016-12-27 1.05015
2016-12-23 1.05005
日付は実際には1999年に遡るので、これを日付でソートすると、データが昇順で表示されるはずです。
MaxUの正解を拡張するだけです。正しい方法を使用しましたが、他の多くのpandasメソッドと同様に、目的の変更を有効にするためにデータフレームを「再作成」する必要があります。 MaxUはすでに提案されています。これは、変数を再度入力することによって実現されます(使用されたメソッドの出力を同じ変数に「保存」するため)。次に例を示します。
df = df.sort_index()
あるいは、属性_inplace=True
_の力を利用することで、変数を再宣言する必要なく、変数の内容を置き換えます。
df.sort_index(inplace=True)
ただし、私の経験では、最初のオプションを使用すると「安全」に感じることがよくあります。また、すべてのメソッドがinplace
の使用法を提供しているわけではないため、より明確で正規化されたように見えます。しかし、私はすべて私が推測するスクリプトスタイルに行き着きます...
データはこのようになります
Date,Last
2016-12-30,1.05550
2016-12-29,1.05275
2016-12-28,1.04610
2016-12-27,1.05015
2016-12-23,1.05005
パンダを使用してデータを読み取る
import pandas as pd
df = pd.read_csv('data',sep=',')
# Displays the data head
print (df.head())
Date Last
0 2016-12-30 1.05550
1 2016-12-29 1.05275
2 2016-12-28 1.04610
3 2016-12-27 1.05015
4 2016-12-23 1.05005
# Sort column with name Date
df = df.sort_values(by = 'Date')
Date Last
4 2016-12-23 1.05005
3 2016-12-27 1.05015
2 2016-12-28 1.04610
1 2016-12-29 1.05275
0 2016-12-30 1.05550
# reset the index
df.reset_index(inplace=True)
# Display the data head after index reset
index Date Last
0 4 2016-12-23 1.05005
1 3 2016-12-27 1.05015
2 2 2016-12-28 1.04610
3 1 2016-12-29 1.05275
4 0 2016-12-30 1.05550
# delete the index
del df['index']
# Display the data head
print (df.head())
Date Last
0 2016-12-23 1.05005
1 2016-12-27 1.05015
2 2016-12-28 1.04610
3 2016-12-29 1.05275
4 2016-12-30 1.05550