16

PandasDataFrameの列の値のタイムゾーンを設定したいと思います。pandas.read_csv()でDataFrameを読んでいます。

4

3 に答える 3

22

関数を手動でread_csv設定することにより、日付をUTCとして直接読み取ることができます。次に例を示します。date_parser

from dateutil.tz import tzutc
from dateutil.parser import parse

def date_utc(s):
    return parse(s, tzinfos=tzutc)

df = read_csv('my.csv', parse_dates=[0], date_parser=date_utc)

時系列を作成している場合は、次のtz引数を使用できdate_rangeます。

dd = pd.date_range('2012-1-1 1:30', periods=3, freq='min', tz='UTC')

In [2]: dd
Out[2]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01 01:30:00, ..., 2012-01-01 01:32:00]
Length: 3, Freq: T, Timezone: UTC

DataFrame / Seriesがすでに時系列でインデックス付けされている場合は、このtz_localizeメソッドを使用してタイムゾーンを設定できます。

df.tz_localize('UTC')

または、すでにタイムゾーンがある場合は、次を使用しますtz_convert

df.tz_convert('UTC')
于 2012-12-22T10:50:53.967 に答える
9
# core modules
from datetime import timezone, datetime

# 3rd party modules
import pandas as pd
import pytz

# create a dummy dataframe
df = pd.DataFrame({'date': [datetime(2018, 12, 30, 20 + i, 56)
                            for i in range(2)]},)
print(df)

# Convert the time to a timezone-aware datetime object
df['date'] = df['date'].dt.tz_localize(timezone.utc)
print(df)

# Convert the time from to another timezone
# The point in time does not change, only the associated timezone
my_timezone = pytz.timezone('Europe/Berlin')
df['date'] = df['date'].dt.tz_convert(my_timezone)
print(df)

与える

                 date
0 2018-12-30 20:56:00
1 2018-12-30 21:56:00
                       date
0 2018-12-30 20:56:00+00:00
1 2018-12-30 21:56:00+00:00
                       date
0 2018-12-30 21:56:00+01:00
1 2018-12-30 22:56:00+01:00
于 2018-04-27T12:10:33.053 に答える
0

df ['date'] = df ['date']。dt.tz_localize('UTC')

これは、私の「ナイーブ」タイムゾーンから機能するようです。

于 2022-02-08T04:14:15.623 に答える