[英]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.