2016-07-14 7 views
1

実際のイベントの日付がない場合、1700年の日付値を使用しているデータを処理する必要があります。 1700年は1900年から始まる日時を壊しますが、皆さんはそれを知っていると確信しています。pandas dataframeの年が1900未満の場合

私はdatetime型にデータを変換して、if文試してみました

df["DATE"] = pd.to_datetime(df["DATE"])  
if df['DATE'].dt.year.any() < 1900 
    #assigning today's date 
    df['DATE'] = dt.datetime.today().strftime("%m/%d/%y") 
else: 
    #the original date value, formatted 
    df["DATE"] = df["DATE"].map(lambda x: x.strftime("%m/%d/%y")) 

if文が1700をキャッチしていないと、私はエラーを取得:
"ValueError: year=1700 is before 1900"

パンダのバージョン:0.18 . numpyバージョン:1.11.1

+0

サンプルデータを使用すると、これは簡単に答えることができます。とにかく誰かがそれに答えるかもしれませんが、それを含めてほとんど常に答えを得る確率は高くなります。 – piRSquared

答えて

2

この問題の再現には問題がありますが、試してみてください:

df[df.DATE.dt.year < 1900] = dt.datetime.today() 
df.DATE = df.DATE.map(lambda x: x.strftime("%m/%d/%y")) 
+0

これは機能しますが、どのように出力をフォーマットしますか? df.dat.dt.year <1900> = dt.datetime.today() 'にタイプエラー – mattrweaver

+0

を与える' df.DATE = df.Date.map(lambda x:x.strftime( "%m /%d /%y") 'は書式設定を行います。 – Grr

+0

それは私が考えたことですが、私はまだこの出力を得ていました:最終的なファイルに '2016-07-14 15:44:26.675000'がありますが、私はスクリプトの後半にそれを固定しています。ありがとう! – mattrweaver

関連する問題