日時列をPandasデータフレームの文字列に変換し直そうとしています。
これまでの構文は次のとおりです。
all_data['Order Day new'] = dt.date.strftime(all_data['Order Day new'], '%d/%m/%Y')
しかし、これはエラーを返します:
記述子「strftime」には「datetime.date」オブジェクトが必要ですが、「シリーズ」を受け取りました。
誰が私が間違っているのか教えてもらえますか?.
バージョン0.17.0
以降を使用している場合は、ベクトル化された .dt.strftime
を使用してこれを呼び出すことができます。
all_data['Order Day new'] = all_data['Order Day new'].dt.strftime('%Y-%m-%d')
** pandasバージョンが0.17.0
より古い場合は、apply
を呼び出してデータをstrftime
に渡す必要があります。
In [111]:
all_data = pd.DataFrame({'Order Day new':[dt.datetime(2014,5,9), dt.datetime(2012,6,19)]})
print(all_data)
all_data.info()
Order Day new
0 2014-05-09
1 2012-06-19
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2 entries, 0 to 1
Data columns (total 1 columns):
Order Day new 2 non-null datetime64[ns]
dtypes: datetime64[ns](1)
memory usage: 32.0 bytes
In [108]:
all_data['Order Day new'] = all_data['Order Day new'].apply(lambda x: dt.datetime.strftime(x, '%Y-%m-%d'))
all_data
Out[108]:
Order Day new
0 2014-05-09
1 2012-06-19
In [109]:
all_data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2 entries, 0 to 1
Data columns (total 1 columns):
Order Day new 2 non-null object
dtypes: object(1)
memory usage: 32.0+ bytes
列でstrftime
をパラメータとして理解できないため、Series
を呼び出すことはできません。そのため、エラー
all_data['Order Day new']=all_data['Order Day new'].astype(str)
日付がすでに文字列形式で必要な形式になっている場合は、これはもっと簡単だと思います。