我正在尝试导入和绘制午夜之后的日期时间。输入数据集没有附加日期时间,因此我必须重新格式化该列,以使午夜之后的时间戳记延续到当天。这是一个错误。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dates
d = ({
'Time' : ['0/1/1900 8:10:00', '0/1/1900 12:10:00', '0/1/1900 22:10:00', '1/1/1900 1:10:00'],
'Value' : [1,2,3,4],
})
df = pd.DataFrame(data = d)
df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S')
df.plot(x='Time', y='Value')
formatter = dates.DateFormatter('%Y-%m-%d %H:%M:%S')
plt.gcf().axes[0].xaxis.set_major_formatter(formatter)
错误:
ValueError: time data '0/1/1900 8:10:00' does not match format '%d/%m/%Y %H:%M:%S' (match)
我知道这些不匹配。但是我不确定什么是最有效的解决方法。我可以增加一天吗?还是有更好的方法来输入时间戳并在午夜之后将24小时添加到时间戳?
答案 0 :(得分:1)
问题是“ 0/1/1900”不是正确格式的日期(“ 1/1/1900”就可以了)。我们可以将一个月中的某天增加一个:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dates
d = ({
'Time' : ['0/1/1900 8:10:00', '0/1/1900 12:10:00', '0/1/1900 22:10:00', '1/1/1900 1:10:00'],
'Value' : [1,2,3,4],
})
df = pd.DataFrame(data = d)
df['Time'] = ['/'.join([str(int(x.split('/')[0])+1)] + x.split('/')[1:]) for x in d['Time']]
df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S')
df.plot(x='Time', y='Value')
formatter = dates.DateFormatter('%Y-%m-%d %H:%M:%S')
plt.gcf().axes[0].xaxis.set_major_formatter(formatter)
输出: