2017-07-20 8 views
1

日付のある列の形式は、7/5/17 14:44です。オブジェクトを日付形式に変換すると、私の日付は17-5-7になります。これは私が望むものではありません。私はちょうど7/5/17を持っていたい。ValueError:時刻データがフォーマット '%d /%m /%Y'(一致)と一致しません

私はフォーマット=「%d個/%はm /%Y」と私の日付形式で順番を切り替えようだとき、私は次のエラーを取得する:

ValueError: time data '3/20/12 0:00' does not match format '%d/%m/%Y' (match) 

私のコードは以下の通りです。どこが間違っていますか?また、私はフォーマットする必要がある3列を持っているので、これを行うより効率的な方法はありますか?

name_cols = ['GUID1', 'GUID2', 'Org ID', 'Org Name', 'Org Type', 'Chapter', 'Join Date', 'Effective Date', 'Expire Date'] 
pull_cols = ['Org ID', 'Org Name', 'Org Type', 'Chapter', 'Join Date', 'Effective Date','Expire Date'] 
df1 = pd.read_csv(path, header=None, encoding="ISO-8859-1", names=name_cols, usecols=pull_cols, index_col=False) 
df1['Join Date'] = pd.to_datetime(df1['Join Date'], format='%d/%m/%Y') 
df1['Effective Date'] = pd.to_datetime(df1['Effective Date']) 
df1['Expire Date'] = pd.to_datetime(df1['Expire Date']) 
+0

を@ roganjosh私はbuを試した同じエラーが発生する – user3088202

答えて

0

私はあなたが必要だと思う:

df1 = pd.DataFrame({'Join Date':['7/5/17 14:44','7/5/17 14:44']}) 
print (df1) 
     Join Date 
0 7/5/17 14:44 
1 7/5/17 14:44 

df1['Join Date'] = pd.to_datetime(df1['Join Date'], format='%d/%m/%y %H:%M').dt.floor('D') 
print (df1) 
    Join Date 
0 2017-05-07 
1 2017-05-07 

またはスペースでstr.splitを使用ANS str[0]で最初の値を選択します。

df1['Join Date'] = pd.to_datetime(df1['Join Date'].str.split().str[0], format='%d/%m/%y') 
print (df1) 

    Join Date 
0 2017-05-07 
1 2017-05-07 

いけない日時が必要な場合:

df1['Join Date'] = df1['Join Date'].str.split().str[0] 
print (df1) 

    Join Date 
0 7/5/17 
1 7/5/17 
+0

私は14:44:00部分を取り除こうとしています。私はちょうど7/5/17を使用したいと思う – user3088202

+0

従って私はフォーマットの時間を含んでいないことが私のためにそれをすると考えました。 – user3088202

+0

ありがとうございます。最後はトリックでしたが、残りは同じエラーを返しました。 – user3088202

関連する問題