我有包含两列的数据框,时间和值。 “时间”列中的实际值以秒。毫秒的格式给出。 我以以下方式创建了数据框:
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秒以内,而实际时间跨度是几秒钟。
当我对整个数据集使用相同的过程时,我得到的时间跨度以秒为单位,但是应该以小时为单位。换句话说,通过查看该图,我可以说经过的时间是几十秒,而不是应该的几个小时。
我该如何解决?
答案 0 :(得分:0)
您可以使用转换器方法转换和存储seconds.millieconds。然后,您可以添加到列表并在图形中使用它。
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']