将pandas数据帧的列从4位转换为时间

时间:2016-12-17 04:19:59

标签: python datetime pandas dataframe

我尝试将pandas数据框的一列从以下格式更改为:16200016:20:00(%H%M%S)

我试过这个:

t = mydataframe['column name']
pd.to_datetime(t, format='%H%M%S')

但是我收到了这个错误:

TypeError: 'long' object is unsliceable

但是,如果我不使用格式参数,我会得到:

1970-01-01 00:00:00.000162000

这里发生了什么?

修改

t.dtype
Name: column name, dtype: int64

print t.head(5)
0    162000
1    161200
2    162400
3    163600
4    164800

t.to_dict()
{0: 162000,
 1: 161200,
 2: 162400,
 3: 163600,
 4: 164800, ...

EDIT2:

好的,重新启动笔记本内核,解决了这个问题!电脑呃? :d

好的,现在我有这种格式:

1900-01-01 16:20:00

我怎样才能改变这一点,to_datetime只给我16:20:00

EDIT3:

知道了!顺便说一下,我的第二个问题的答案就在这里:How to change the datetime format in pandas

1 个答案:

答案 0 :(得分:1)

您需要使用.dt.time来获取新datetime对象的时间部分。

pd.to_datetime(t, format='%H%M%S').dt.time

您还需要将上述输出重新分配给您的数据帧。将其分配给新列,或将其重新分配回原始列。

将其分配给现有列:

mydataframe['column name'] = pd.to_datetime(t, format='%H%M%S').dt.time

将其分配给新列:

mydataframe['new column'] = pd.to_datetime(t, format='%H%M%S').dt.time

在任何一种情况下,您都会得到一个看起来像这样的数据框

    Times
0   16:20:00
1   16:12:00
2   16:24:00
3   16:36:00
4   16:48:00