我正在使用python pandas并读取包含多个列的csv文件。文件中还包括几个时间列。我把它们删除,只选择一列作为时间列。我将此列定义为索引,并将其设置为时间。
接下来是:我想绘制一个特定的列来获得第一印象。在数据中,我看到此列的值在10:42从600下降到零,请参见图像:
如果我绘制列,我得到以下图像
但是,如果我放大,我会得到以下内容
可以看出,图像存在巨大差异。似乎有些事情出了问题。
我有以下代码
data_304=pd.read_csv(r"data.csv",sep=";")
data_304=data_304.drop(["columns_to_drop"],axis=1)
data_304['date']=pd.to_datetime(data_304['date'])
data_304=data_304.set_index('piovan_1_dosing_creation_date')
data_304.index=data_304.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))
data_304["piovan_1_dosing_batchvalue_value"].plot()
我认为这可能是由于时区,但我找不到合适的方法。如果你能给我一个提示,我将非常感激:)
首先让我感谢你的帮助,我真的很感激:) @ImportanceOfBeingErnest:你是对的。放大和缩小的问题是由于我将我的索引dtype ='datetime64 [ns]'转换为使用该行的字符串
data_304.index=data_304.index.map(lambda t: t.strftime('%Y-%m-%d %H:%M'))
由于我的索引上升到几毫秒,但我对毫秒而不是几秒钟不感兴趣,我寻找一种方法来显示秒。使用strftime()提到的abve是我发现的解决方案。不幸的是,我不够聪明,无法检查后台发生的情况,也找不到第一封邮件中描述的问题的答案。
经过一些搜索和聚焦后,我发现以下信息可以帮助我将毫秒设置为零,并保持类型dtype ='datetime64 [ns]',这是由
data_304.index=data_304.index.values.astype('<M8[m]')
将此应用于我的数据会更改索引时间外观
2019-04-24 05:41:13.809000至2019-04-24 05:41:00
如上所述,类型仍然是datetime64 [ns]
如果您想保留类型并截断索引,这可能会帮助您
干杯再次感谢:)