2017-07-10 1 views
1

私は2つのワークシートをパンダのデータフレームに分けて読みました。どちらも日付発行列を持っています。Excelの列にないときに、Pandas df列から時間を削除するにはどうすればよいですか?

両方のワークシートで、列はdd/mm/yyyyとしてExcelに保持されます。

WS1

13/02/2017 
01/02/2017 
08/11/2016 
05/08/2016 
16/03/2017 

53 2017-02-13 
51 2017-02-01 
22 2016-11-08 
0 2016-08-05 
63 2017-03-16 
Name: Date Issued, dtype: datetime64[ns] 

しかし、WS2

08/03/2017 
24/08/2016 
28/11/2016 
26/10/2016 
10/03/2017 


0 2017-03-08 00:00:00 
1 2016-08-24 00:00:00 
2 2016-11-28 00:00:00 
3 2016-10-26 00:00:00 
4 2017-03-10 00:00:00 
Name: Date Issued, dtype: object 

なぜそれがdtypesが異なっていて、どのように私は時間を削除する適用することができるということですか?

コードは、現在私が使用しようとしましたパンダ

df = pd.read_excel(file, 'ws2') 
df = df.loc[:, ['Date Issued', 'Person ID', 
          'First Name', 'Surname', 'Type', 'Amount']] 
df = df.sort_values(by=['Surname']) 
df['Date Issued'] = pd.to_datetime(df_loan['Date Issued'], dayfirst=True) 

に対処するための通常の外に何もないように見えます。

df['Date Issued'] = pd.to_datetime(df['Date Issued'], dayfirst=True) 

ただし、次のエラーが発生します。

TypeError: invalid string coercion to datetime 

また、

df['Date Issued'] = df['Date Issued'].astype('datetime64[ns]') 

ただし、このエラーが発生しました。

ValueError: Error parsing datetime string " " at position 1 
+0

(あなたpd.to_datetimeに何が起こる)あなたは真のinfer_datetime_format =を設定すると? – Adestin

+0

私はまだ同じTypeErrorを得る – Levo

答えて

1

少なくとも1つの非datetime値があるようです。

ので、パラメータerrors='coerce'を必要とするためto_datetimeNaT(日時のNaN)にこれらの値を変換します

df['Date Issued'] = pd.to_datetime(df['Date Issued'], dayfirst=True, errors='coerce') 
+0

素晴らしいです。私はこのパラメータを見ましたが、すべてを解決するとは考えていませんでした。エラー全体を引き起こしたExcelから読み込まれた不正なブランクリンクがあるようです。しかし、私は、データを見直すときに.head()を扱うことに気づいていませんでした。 ライブと学習。再びJezraelあなたは素晴らしいです! – Levo

+0

喜んで助けてくれる、幸運! – jezrael

関連する問題