【问题标题】:how to show datetime from 2017-12-06 13:07:00+05:30 fromat to 2017-12-06 18:37:00 format in Python如何在 Python 中显示从 2017-12-06 13:07:00+05:30 格式到 2017-12-06 18:37:00 格式的日期时间
【发布时间】:2018-05-21 07:59:13
【问题描述】:

我想在 python 的数据框中转换 datetime 列的时区。我就是这样做的。

df.dtypes
Out[11]: 
x1                 object
x2                 object
event_time datetime64[ns]
x3                float64
dtype: object

type(df.event_time)
Out[12]: pandas.core.series.Series

但是结果是这样的

df['event_time'].dt.tz_localize('Asia/Kolkata')
Out[2]: 
0       2017-12-06 13:07:00+05:30
1       2017-12-06 13:06:00+05:30
2       2017-12-06 13:05:00+05:30
3       2017-12-06 13:04:00+05:30
4       2017-12-06 13:03:00+05:30
5       2017-12-06 13:02:00+05:30
6       2017-12-06 13:01:00+05:30
7       2017-12-06 13:00:00+05:30
8       2017-12-06 12:59:00+05:30
9       2017-12-06 12:58:00+05:30
10      2017-12-06 12:57:00+05:30
11      2017-12-06 12:56:00+05:30
12      2017-12-06 12:55:00+05:30

有没有办法像下面这样显示日期时间

 0       2017-12-06 18:37:00
 1       2017-12-06 18:36:00

另外,我有兴趣通过使用 +05:30 而不是使用区域名称 'Asia/Kolkata' 来更改时区

EDIT : 


 df = pd.DataFrame({'event_time': [pd.Timestamp('2017-12-06 13:07:00'),pd.Timestamp('2017-12-06 13:06:00')]})

df['event_time'] = df['event_time'].dt.tz_localize('Asia/Kolkata')

print (df)
                 event_time
0 2017-12-06 13:07:00+05:30
1 2017-12-06 13:06:00+05:30

df['event_time'] = df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_conver‌​t('UTC').dt.tz_local‌​ize(None) 
  File "<ipython-input-24-ee54cb3c6b25>", line 1
    df['event_time'] = df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_conver‌​t('UTC').dt.tz_local‌​ize(None)
                                                                                     ^
SyntaxError: invalid character in identifier

【问题讨论】:

    标签: python python-3.x pandas datetime timezone


    【解决方案1】:

    我相信你需要:

    df = pd.DataFrame({'event_time': [pd.Timestamp('2017-12-06 13:07:00'), 
                                         pd.Timestamp('2017-12-06 13:06:00')]})
    
    
    
    df['event_time'] = df['event_time'].dt.tz_localize('Asia/Kolkata')
    print (df)
                     event_time
    0 2017-12-06 13:07:00+05:30
    1 2017-12-06 13:06:00+05:30
    
    df['event_time'] = df['event_time'].dt.tz_convert('UTC').dt.tz_localize(None)
    print (df)
               event_time
    0 2017-12-06 07:37:00
    1 2017-12-06 07:36:00
    

    【讨论】:

    • 我添加了示例数据,对我来说效果很好。 f['event_time'] = df['event_time'].dt.tz_localize('Asia/Kolkata') 也不行?
    • df['event_time'].dt.tz_localize('Asia/Kolkata') 它可以工作.. 但我希望输出是这样的2017-12-06 18:37:00 .. 我的输出显示这个2017-12-06 13:07:00+05:30 .. 我希望添加 +05:30...我厌倦了上面的代码.. df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_localize(None) .. 结果显示相同的输出2017-12-06 13:07:00
    • 你忘记转换为UTC ;)
    • df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_convert('UTC').dt.tz_localize(None)
    • 这会引发错误:df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_conver‌​t('UTC').dt.tz_local‌​ize(None) File "&lt;ipython-input-31-2db456cc7037&gt;", line 1 df['event_time'].dt.tz_localize('Asia/Kolkata').dt.tz_conver‌​t('UTC').dt.tz_local‌​ize(None) ^ SyntaxError: invalid character in identifier
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多