【问题标题】:How to just put Hours Minutes and seconds in data frame instead of Year , months and days?如何将 Hours Minutes 和 seconds 放入数据框中而不是 Year ,months 和 days ?
【发布时间】:2020-01-10 14:48:11
【问题描述】:

我想在 mVHH:MM:SS:MMM 中绘制心电图的折线图。它是 10 秒心电图条。

  1. image of ECG CSV file with two ECG values and time

我已经提取了时间列,现在我想在 python 的数据框中转换时间列,然后将其绘制在图表上

但是当我应用 to_datetime() 函数时,它给了我以下错误

组合映射至少需要 [年、月、日] 指定:[日、月、年] 缺失

  1. Screenshot of error i get

请帮我解决这个错误,我只想输入 %H:%M:%S.%f 因为我没有年月日。

【问题讨论】:

  • 您可以使用任何日期(夏令时除外)。
  • 我认为这是因为据我所知,pandas 没有单独的时间数据类型。 pandas 中的对象类型映射到字符串的 python 基本类型。但是我对此没有解决方案

标签: python python-3.x dataframe datetime matplotlib


【解决方案1】:

如评论所述,您可以为这些时间添加日期。日期可以是任意的。然后您可以转换为日期时间并使用它们来绘制图表。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

data = {'Time':['11:20:15.333','12:00:00.444', '13:46:00.100'],
       'A':[1,3,2],'B':[5,5,4]}
df = pd.DataFrame(data=data)
df["Date"] = "2019-09-09"
df['Datetime'] = pd.to_datetime(df['Date']) + pd.to_timedelta(df['Time'])

df = df[["Datetime", "A", "B"]].set_index("Datetime")

ax = df.plot(x_compat=True)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%H:%M:%S.%f"))

plt.show()

【讨论】:

  • 谢谢,请直接告诉我:df = df[["Datetime", "A", "B"]].set_index("Datetime") ........ ............. .set_index 有什么作用,它有什么帮助?
  • 再做一件事,编辑您的代码以在 x 轴上显示时间间隔.....比如五秒或一分钟。
【解决方案2】:

to_timedelta

日期

df1 = {'Time':['11:20:15.333','10:00:00.444'],'P1':['102','102'],'P2':['240','247']}
df1 = pd.DataFrame(data=df1)
df1

代码

df1['Time'] = pd.to_timedelta(df1['Time'])
df1

结果

    Time            P1  P2
0   11:20:15.333000 102 240
1   10:00:00.444000 102 247

参考:https://stackoverflow.com/a/46801500/1855988

【讨论】:

    【解决方案3】:

    您需要指定要将时间转换为的format。您可以在here 找到有关每个符号含义的更多信息。

    # before it is object
    df['column_name'] = pd.to_datetime(df['column_name'], format="%H:%M:%S,%f")
    df = df.astype('datetime64')
    df['column_name'] =  pd.to_datetime(df['column_name'], format='%H:%M:%S', errors='coerce').dt.time
    # coming back to object
    print(df.head())
    # print(df.info())
    

    【讨论】:

    • 给出这个错误:组装映射至少需要指定[年、月、日]:缺少[日、月、年]
    • 我对代码做了一些修改。请看看它现在是否适合您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多