1. ホーム
  2. python

[解決済み] pandasでカラムを1つのdatetimeカラムに変換する方法は?

2023-06-28 13:50:23

質問

最初の3列が 'MONTH', 'DAY', 'YEAR' であるデータフレームを持っています。

各列には整数があります。 データフレーム内にある3つの列をすべてdatetimeに変換するPythonicな方法はありますか?

からです。

M    D    Y    Apples   Oranges
5    6  1990      12        3
5    7  1990      14        4
5    8  1990      15       34
5    9  1990      23       21

になります。

Datetimes    Apples   Oranges
1990-6-5        12        3
1990-7-5        14        4
1990-8-5        15       34
1990-9-5        23       21

どのように解決するのですか?

0.13 (coming very soon) では、これはかなり最適化されており、かなり高速です (ただし 0.12 ではまだかなり高速です); どちらもループ処理より桁違いに高速です

In [3]: df
Out[3]: 
   M  D     Y  Apples  Oranges
0  5  6  1990      12        3
1  5  7  1990      14        4
2  5  8  1990      15       34
3  5  9  1990      23       21

In [4]: df.dtypes
Out[4]: 
M          int64
D          int64
Y          int64
Apples     int64
Oranges    int64
dtype: object

# in 0.12, use this
In [5]: pd.to_datetime((df.Y*10000+df.M*100+df.D).apply(str),format='%Y%m%d')

# in 0.13 the above or this will work
In [5]: pd.to_datetime(df.Y*10000+df.M*100+df.D,format='%Y%m%d')
Out[5]: 
0   1990-05-06 00:00:00
1   1990-05-07 00:00:00
2   1990-05-08 00:00:00
3   1990-05-09 00:00:00
dtype: datetime64[ns]