是python的新手,正在寻求帮助。
我已经用数据导入了一个csv,其中一列具有日期时间戳。作为数据框,它被读取为类型对象,例如20.4.2018 07:57:00
我如何将该列转换为时间(或者从仅显示时间的日期时间戳创建一个新列)而不使用日期,以便我可以根据时间绘制图形。
谢谢。
滑车
答案 0 :(得分:2)
您可以使用strptime
from datetime
module
>>> import datetime
>>> datetime.datetime.strptime("20.4.2018 07:57:00", "%d.%m.%Y %H:%M:%S")
datetime.datetime(2018, 4, 20, 7, 57)
答案 1 :(得分:1)
如果您的df是这样的:
date_time_info value
0 2010.01.01 07:57:00 1
1 2010.01.01 07:58:00 2
2 2010.01.01 07:59:00 3
使用此:
df['date_time_info'] = pd.to_datetime(df['date_time_info']).dt.strftime('%H:%M:%S')
输出:
date_time_info value
0 07:57:00 1
1 07:58:00 2
2 07:59:00 3
要进行绘图,您可以采用以下方式:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df['date_time_info'] = pd.to_datetime(df['date_time_info'])
fig, ax = plt.subplots(1)
fig.autofmt_xdate()
plt.plot(df['date_time_info'], df['value'], linestyle='None', marker='.', markersize=10)
xfmt = mdates.DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.show()
输出:
答案 2 :(得分:1)
您可以直接使用熊猫to_datetime:
dt = pd.to_datetime("20.4.2018 07:57:00", format="%d.%m.%Y %H:%M:%S")
time_only = dt.time()
优点是to_datetime是矢量化的,因此您可以将其直接应用于整个索引/列。
答案 3 :(得分:0)
我将使用datetime模块:
from datetime import datetime
timestamp_string = "20.4.2018 07:57:00"
dt_obj = datetime.strptime(timestamp_string, "%d.%m.%Y %H:%M:%S")
print(dt_obj.strftime("%H:%M:%S"))