簡體   English   中英

忽略Pandas Dataframe中的時間偏移

[英]Ignore time offsets in Pandas Dataframe

我有一個由時間組成的Pandas DataFrame(有時是一個NaN)。 我想刪除時區偏移量。 任何想法如何做到這一點?

d = pd.DataFrame({'t':['2014-01-25 07:53:59-05:00', '2013-12-09 20:04:29+01:00', np.NaN]})
print d
a = pd.to_datetime(d.t)
a

輸出:

                          t
0  2014-01-25 07:53:59-05:00
1  2013-12-09 20:04:29+01:00
2                        NaN

0   2014-01-25 12:53:59
1   2013-12-09 19:04:29
2                   NaT

Name: t, dtype: datetime64[ns]

to_datetime轉換中,時間轉換為UTC。 這是不希望的。 知道如何阻止這種轉換發生嗎? 我更喜歡在Pandas中這樣做。

所需輸出:

0   2014-01-25 07:53:59
1   2013-12-09 20:04:29
2                   NaT

您可以刪除NaN,然后​​去除偏移量,然后執行轉換:

In [19]: 
# create the dataframe
d = pd.DataFrame({'t':['2014-01-25 07:53:59-05:00', '2013-12-09 20:04:29+01:00', np.NaN]})

d

Out[19]:

                           t
0  2014-01-25 07:53:59-05:00
1  2013-12-09 20:04:29+01:00
2                        NaN

[3 rows x 1 columns]

In [20]:
# need to drop the NaN in order for the conversion to work
d.dropna(inplace=True)
# strip the offset
d.t = d.t.apply(lambda x : x[:-6])

d
Out[20]:

                     t
0  2014-01-25 07:53:59
1  2013-12-09 20:04:29

[2 rows x 1 columns]

In [21]:
# now convert to datetime
d.t = pd.to_datetime(d.t)

d

Out[21]:

                    t
0 2014-01-25 07:53:59
1 2013-12-09 20:04:29

[2 rows x 1 columns]

In [22]:

d.dtypes

Out[22]:

t    datetime64[ns]
dtype: object

正如@DSM指出的那樣,您可以一步完成此操作(這也可以處理NaN):

d.t = pd.to_datetime(d.t.str[:-6])

也會工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM