2016-12-19 10 views
0

私はPythonのパンダ - 日と月は

(2015年1月5日11時51分00秒)で始まり、「タイムスタンプ」列

「を有しmyfile.csv」ファイルを持って混ぜますそして(2015年7月5日23時22分〇〇秒)

9727分

「myfile.csv」の合計スパンはまた、いくつかの数値であり、「A」という名前の列を有する

で終了値は、複数の値fまたは各分の中で「A」を使用し、それぞれが最も近い秒までの一意のタイムスタンプを持ちます。

df = pd.read_csv('myfile.csv') 
df = df.set_index('timestamp') 
df.index = df.index.to_datetime() 
df.sort_index(inplace=True) 
df = df['A'].resample('1Min').mean() 
df.index = (df.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))) 

私の問題は、Pythonは 'タイムスタンプ' は

(2015年1月5日11時51分00秒)から始まると考えているようだということです

を次のように私は、コードを持っています - > 1月5日

(2015年7月5日午前23時22分00秒)で

と仕上げ

- > 7月5日

しかし、実際に 'タイムスタンプ' は月

第七の

5月1日

と終了時に始まりしたがって、上記のコードが生成実際には9,727行しか持たないときは、261,332行のOMGというデータフレームです。

どういうわけか、Pythonは月を日付と混同して、日付を誤解しています。これをどのように並べ替えるのですか?

答えて

2

: それはのラインで何かする必要がありますように私には見えます。ここでは、希望する列を日付としてparse_datesに設定し、dayfirstを使用します。これはデフォルトでfalseになっているので、日付が最初の列にあると仮定して、次のようにしてください。

df = pd.read_csv('myfile.csv', parse_dates=[0], dayfirst=True) 

日付列は、最初の行がない場合、単に列番号に0を変更します。

+0

これは何もしません。つまり、出力に何も変化はありません。私はまだ261,332行のパンダデータフレームを取得します。 –

+0

私はいくつかの編集や整理をしていました。 – josh

+0

あなたは天才です! –

0

質問に含まれている日付の形式は、strftimeフィルタと一致していないようです。文字列パラメータを修正するにはthisを見てください。あなたがまっすぐにあなたのパンダのデータフレームにcsvファイルから日付を解析することができますcsv_read内の多くの議論があります

'%d/%m/%Y %H:%M:%S' 
+0

私はあなたの提案を試みましたが、私はまだ261,332行のパンダのデータフレームを取得します。私のコードのstrftimeフィルタは、インデックスから '秒'を削除することです。 –

関連する問題