我是熊猫的新手,正在练习一些基本功能。我有一个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]
吗?
答案 0 :(得分:2)
否,这是不可能的。对于日期时间,总是需要日期。
但是,如果需要与时俱进,最好将timedelta
中的strftime
与to_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