2016-11-16 4 views
1

で一貫性のない日時形式に私は次の形式のデータフレームで8月/ 2015年の月のいくつかのデータをしました:パンダ

Timestamp     Value 

2015-12-08 23:58:00   3.4 
2015-12-08 23:59:00   3.2 
2015-08-13 00:00:00   1.1 
2015-08-13 00:01:00   0.9 

YY-DD-MMおよびYY-MM-DD利用可能な2つの形式があります。 (8月13日から開始)。私はこれらを共通のフォーマットに変換するのに苦労しています。どんな助けもありがとう。

おかげ

+1

これは難しい質問です。あなたが提供したファジーロジックとはるかに多くのデータが必要です。あなたが持っているものを使って、 '' 2015-12-08 'を '' 2015-08-12'に変換する必要があると判断できますが、それはその隣の文脈の中でのみです。ポイントは、これはパンダの質問ではありません。むしろ、それはあなたがデータ質問を台無しにするために叫ぶ人です。 – piRSquared

+0

8月1日から8月31日までの完全な月データがあります。問題は、8月1日から8月12日までのデータの日付形式はyy-dd-mmで、8月13日から8月31日はyy-mm-ddです。値の列を変更せずに一貫性のある日時フォーマットが必要です。 – johndaniel

+0

8月のデータはどうやって知りますか? 12月のデータではないのですか?この質問への回答は、クリーンアッププロセスのロジックを提供することができます。 – Parfait

答えて

1

まず、予想される正しい形式で始まる、datatimeに文字列を変換、およびエラーを無視するように依頼:

df['Correct'] = pd.to_datetime(df.Timestamp, 
           format='%Y-%d-%m %H:%M:%S', 
           errors='coerce') 


df.Correct 
Out[34]: 
0 2015-08-12 23:58:00 
1 2015-08-12 23:59:00 
2     NaT 
3     NaT 
Name: Correct, dtype: datetime64[ns] 

今、あなたは第二のフォーマットを適用する知っています

df.Correct.update(pd.to_datetime(df[df.Correct.isnull()].Timestamp, 
           format='%Y-%m-%d %H:%M:%S', 
           errors='coerce')) 
df 
Out[36]: 
      Timestamp Val    Correct 
0 2015-12-08 23:58:00 3.4 2015-08-12 23:58:00 
1 2015-12-08 23:59:00 3.2 2015-08-12 23:59:00 
2 2015-08-13 00:00:00 1.1 2015-08-13 00:00:00 
3 2015-08-13 00:01:00 0.9 2015-08-13 00:01:00