2017-02-27 14 views
0

私は列aからfを含むデータフレームを持っています。列b、d、およびfは、pandas.to_datetimeを使用して、datetime型の日付を作成する日付です。ここに私のコード:複数の列のPythonデータフレームto_datetime構文

file = pd.read_csv(filename, usecols=my_columns, engine='python') 
df = pd.DataFrame(file) 
df['b', 'd', 'f'] = pd.to_datetime(df['b', 'd', 'f']) 
print('FINISHED') 

しかし、私は自分のコードを実行すると、それは固まっているようだ。私はエラーはありませんが、 "FINISHED"は決して印刷されません。私はto_datetime行の私の構文が間違っていると思うが、私はなぜそれを修正するのか分からない。私のデータフレームは約1,000行あります。私はPythonにはかなり新しいです。私は間違って何をしていますか?

ありがとうございました

+0

Iドン; tが、これは法的な構文だと思う:あなたは 'parse_dates = [ 'B'、 'd' を渡してみてくださいほかに' DF [ 'B'、 'D'、 'F'] '、、 'f'] 'を' pd.read_csv'に変更してください。理由は、おそらく 'KeyError'が存在しないため、タプル( 'b'、 'd'、 'f')の列があることを示しているからです – EdChum

答えて

0

例では、csvとして保存されたExcelからの日付が必要です。

In [18]: df 
Out[18]: 
     a  b  c 
0 1/1/17 1/1/17 1/1/17 
1 1/2/17 1/2/17 1/2/17 
2 1/3/17 1/3/17 1/3/17 
7 1/8/17 1/8/17 1/8/17 
8 1/9/17 1/9/17 1/9/17 
9 1/10/17 1/10/17 1/10/17 

このようなエラーが発生しないようにcoerceを使用してください。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128) 

ループを実行します。

In [26]: for col in df.columns: 
    ...:  df[col] = pd.to_datetime(df[col], errors='coerce') 

あなたが望む出力を得ることができます。

In [27]: df 
Out[27]: 
      a   b   c 
0  NaT 2017-01-01 2017-01-01 
1 2017-01-02 2017-01-02 2017-01-02 
2 2017-01-03 2017-01-03 2017-01-03 
3 2017-01-04 2017-01-04 2017-01-04 
4 2017-01-05 2017-01-05 2017-01-05 
5 2017-01-06 2017-01-06 2017-01-06 
6 2017-01-07 2017-01-07 2017-01-07 
7 2017-01-08 2017-01-08 2017-01-08 
8 2017-01-09 2017-01-09 2017-01-09 
9 2017-01-10 2017-01-10 2017-01-10 
1

あなたはto_datetimeメソッドを間違って使用していると思います。ただ実行してみてください

cols = ['b','d','f'] 
for col in cols: 
    df[col] = pd.to_datetime(col) 
関連する問題