如何在熊猫(Python)中将时间对象转换为日期时间格式?

时间:2018-06-30 14:57:39

标签: python pandas

我是熊猫的新手,正在练习一些基本功能。我有一个CSV文件,其中包含某个日期每一分钟的一些数据。读取CSV后,df.head()得到以下结果:

        Time            C1  C2  C3  C4  C5  C6
0  2016-05-25 03:15:00  0   0   0   0   0   0
1  2016-05-25 03:16:00  0   0   0   0   0   0
2  2016-05-25 03:17:00  0   0   2   0   0   0  
3  2016-05-25 03:18:00  0   0   0   5   0   2
4  2016-05-25 03:19:00  0   0   0   0   0   5

我使用了parse_dates的{​​{1}}选项。因此,时间为pd.read_csv格式。因为日期是相同的,所以我不想在列上显示该日期。所以,我用

datetime64[ns]

它做了我想要的,但是将格式更改为df['Time']=df['Time'].dt.time ,这是我不想要的。根据其他答案的建议,我做了以下事情:

object

此操作将列转换为df['Time']=pd.to_datetime(df['Time'], format="%H:%M:%S") df['Time'].head() 0 1900-01-01 03:15:00 1 1900-01-01 03:16:00 2 1900-01-01 03:17:00 3 1900-01-01 03:18:00 4 1900-01-01 03:19:00 Name: Time, dtype: datetime64[ns] ,但增加了一个附加日期。可以将时间转换为datetime64[ns]吗?

1 个答案:

答案 0 :(得分:2)

否,这是不可能的。对于日期时间,总是需要日期。

但是,如果需要与时俱进,最好将timedelta中的strftimeto_timedelta一起用于字符串HH:MM:SS

df['Time'] = pd.to_timedelta(df['Time'].dt.strftime('%H:%M:%S'))
print (df)
      Time  C1  C2  C3  C4  C5  C6
0 03:15:00   0   0   0   0   0   0
1 03:16:00   0   0   0   0   0   0
2 03:17:00   0   0   2   0   0   0
3 03:18:00   0   0   0   5   0   2
4 03:19:00   0   0   0   0   0   5

print (df.dtypes)
Time    timedelta64[ns]
C1                int64
C2                int64
C3                int64
C4                int64
C5                int64
C6                int64
dtype: object