从 Python 中的 CSV 中读取和绘制日期
Reading and Graphing Dates from a CSV in Python
我有一个 CSV,其中第一列是日期和时间,其余列是当时的测量值。日期的格式为 "MM/DD/YYYY hh:mm:ss",位于单列中。 Python 将其作为字符串读取。如何将其转换为日期和时间? Python 不知道“09/14/2016 23:00:00”正好在“09/15/2016 0:00:00”之前
在 MatLab 中,我可以使用
time = datenum(filename{:,1})
datetick('x','mmm-dd HH:MM:SS')
但我不确定在 Python 中使用什么。这种语言有类似的命令吗?我试过使用 datetime,但运气不佳。
谢谢!
注意:我正在使用 Pandas 读取 CSV
您必须将日期(时间戳)从字符串解析为 datetime
dtype,以便对它们进行适当排序。如果您使用 pandas.read_csv
将 csv 加载到 DataFrame,最简单的方法是使用 parse_dates
关键字。例如:
from io import StringIO
import pandas as pd
s="""Timestamp,Value
06/01/2020 17:05:00,9506.01
06/01/2020 17:10:00,9513.44
06/01/2020 17:15:00,9521.56"""
df = pd.read_csv(StringIO(s), parse_dates=["Timestamp"])
for c in df.columns:
print(f"{c} - {df[c].dtype}")
# Timestamp - datetime64[ns]
# Value - float64
另一种选择是在导入后使用 pandas.to_datetime
:
从字符串转换为日期时间
df = pd.read_csv(StringIO(s))
df["Timestamp"].dtype
# dtype('O') # after import we only have strings...
df["Timestamp"] = pd.to_datetime(df["Timestamp"])
for c in df.columns:
print(f"{c} - {df[c].dtype}")
# Timestamp - datetime64[ns]
# Value - float64
我有一个 CSV,其中第一列是日期和时间,其余列是当时的测量值。日期的格式为 "MM/DD/YYYY hh:mm:ss",位于单列中。 Python 将其作为字符串读取。如何将其转换为日期和时间? Python 不知道“09/14/2016 23:00:00”正好在“09/15/2016 0:00:00”之前
在 MatLab 中,我可以使用
time = datenum(filename{:,1})
datetick('x','mmm-dd HH:MM:SS')
但我不确定在 Python 中使用什么。这种语言有类似的命令吗?我试过使用 datetime,但运气不佳。
谢谢!
注意:我正在使用 Pandas 读取 CSV
您必须将日期(时间戳)从字符串解析为 datetime
dtype,以便对它们进行适当排序。如果您使用 pandas.read_csv
将 csv 加载到 DataFrame,最简单的方法是使用 parse_dates
关键字。例如:
from io import StringIO
import pandas as pd
s="""Timestamp,Value
06/01/2020 17:05:00,9506.01
06/01/2020 17:10:00,9513.44
06/01/2020 17:15:00,9521.56"""
df = pd.read_csv(StringIO(s), parse_dates=["Timestamp"])
for c in df.columns:
print(f"{c} - {df[c].dtype}")
# Timestamp - datetime64[ns]
# Value - float64
另一种选择是在导入后使用 pandas.to_datetime
:
df = pd.read_csv(StringIO(s))
df["Timestamp"].dtype
# dtype('O') # after import we only have strings...
df["Timestamp"] = pd.to_datetime(df["Timestamp"])
for c in df.columns:
print(f"{c} - {df[c].dtype}")
# Timestamp - datetime64[ns]
# Value - float64