2016-12-11 7 views
0

"5 Jan 2001 10:20"という形式の日付を持つ複数の列を持つインポートされたcsvファイルがあります。 (ゼロ詰めの日ではありません)CSVからdatetimeへのオブジェクトの変換

df.dtypeの場合、列は文字列またはdatetimeではなくオブジェクトとして表示されます。私は2つの列の値を差し引いて差分を計算する必要があるので、それらを私ができる状態にしようとしています。

最後にテスト減算を試すと、エラーunsupported operand type(s) for -: 'str' and 'str'が返されます。

私は複数の方法を試しましたが、私が試したあらゆる方法で問題に遭遇しました。 ご協力いただければ幸いです。もし私がそれ以上の情報を与える必要があれば、私はそうするでしょう。

+0

'pd.to_datetime()'を試したことがありますか? – MaxU

答えて

1

この問題は、列内の値が欠落していることが原因であることがわかりました。 coerce=Trueを使用すると、df["Date"] = pd.to_datetime(df["Date"], coerce=True)が問題を解決します。

2

列が空の値その後、エラーを無視して強制するエラーレベルを変更している場合

df["Date"] = pd.to_datetime(df["Date"]) 

このアプローチを使用してdatetime型に列を変換する:あなたが引くことができるはずDetails

df["Date"] = pd.to_datetime(df["Date"], errors='coerce') 

れた後に2つの日付。

例:

import pandas 
df = pandas.DataFrame(columns=['to','fr','ans']) 
df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')] 
df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')] 
(df.fr-df.to).astype('timedelta64[h]') 

は、より多くの詳細については、この答えを相談:

Calculate Pandas DataFrame Time Difference Between Two Columns in Hours and Minutes

あなたはCSVファイルからの読み込み中に直接DateTimeオブジェクトとして列をロードする場合、この例を考えてみます。

Pandas read csv dateint columns to datetime

+0

これは、ローカル変数 'mask'が代入の前に参照されるエラーです。 奇妙なことに、私は値がないという事実と関係があると思います。私は、行が一部の列では動作しますが、NaN値を持つ行では動作しないことを発見しました。 –

+0

ありがとうございました。 –

+0

私は助けることができてうれしい:) @M。 –

3

@MaxUによって示唆されるように、あなたはこのように、「適切な」形式に与えられた列の値を持ってpd.to_datetime()メソッドを使用することができます。

df['datetime'] = pd.to_datetime(df.datetime) 

あなたがいることを持っているものは何でも列にこれをしなければならないでしょうあなたは正しいdtypeにtrasformedする必要があります。列1,2,3が日付として解釈できるデータを含むことが期待されている

df = pd.read_csv(path, parse_dates=[1,2,3]) 

また、あなたはこのように、pd.read_csv()方法のparse_dates引数を使用することができます。

こちらがお役に立てば幸いです。

+0

ありがとうございました。 –