如何正确设置时间格式,以便在使用matplotlib打印时正确显示时间

2024-09-30 06:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两列数据框,时间和值。 时间列中的实际值以seconds.millizes格式给出。 我以以下方式创建了数据帧:

test_df = pd.DataFrame({'Time': [1595006371.756430732,1595006372.502789381 ,1595006373.784446912 ,1595006375.476658051], 'Values': [4,5,6,10]},index=list('0123'))

然后,我用

test_df.dtypes

时间列类型为float64。 然后,我使用将float64转换为datetime64[ns]

test_df['Time']=pd.to_datetime(test_df['Time'], unit='ms')

我使用

import matplotlib.pyplot as plt
plt.xlabel('Time')
ax=test_df.set_index('Time).plot(lw=3)

时间以适当的格式显示小时:分钟:秒。 问题是时间列中的值显示不正确。在上面的示例中,时间跨度在1秒之内,而实际时间跨度为几秒

当我对整个数据集使用相同的过程时,我得到的时间跨度是秒,但应该是小时。换句话说,通过观察情节,我会说经过的时间是几十秒,而不是应该的几个小时

我怎样才能解决这个问题


Tags: 数据testdataframedfindextime格式方式
1条回答
网友
1楼 · 发布于 2024-09-30 06:30:49

您可以使用转换器方法转换和存储秒数。然后您可以添加到列表中,并在图形中使用它

from pandas import DataFrame


def convert(second, milli_second):
    millis = int(milli_second)
    seconds = (millis/1000) % 60
    seconds = int(seconds) + int(second)
    minutes = (millis/(1000*60)) % 60
    minutes = int(minutes)
    hours = (millis/(1000*60*60)) % 24

    return "%d:%d:%d" % (hours, minutes, seconds)


if __name__ == '__main__':
    results = []
    test_df = DataFrame({'Time': [1595006371.756430732,
                                  1595006372.502789381,
                                  1595006373.784446912,
                                  1595006375.476658051],
                         'Values': [4, 5, 6, 10]}, index=list('0123'))

    for i in test_df['Time']:
        sec, ms = str(i).split('.')
        result = convert(sec, ms)
        results.append(result)

    print(results)

输出:

['2:6:1595006375', '1:23:1595006419', '0:13:1595006377', '0:7:1595006431']

相关问题 更多 >

    热门问题