【发布时间】:2020-03-31 17:53:40
【问题描述】:
我有一个包含几列的 csv 文件,其中一列包含dd.mm.yyyy 格式的日期。它的条目(行)不是按时间顺序排列的。我所做的是使用pd.to_datetime 转换这些值,然后是sort_values。 (代码如下)。
所需输出:01.09.2019, 02.09.2019, 03.09.2019, ...., 30.03.2020
但是,我得到:01.01.2020, 01.02.2020, 01.09.2019, 01.11.2019, ..., 31.12.2019
daten = pd.read_csv("gewichtstagebuch.csv", sep=";", decimal=",",
usecols=("Datum","Gewicht (kg)"))
pd.to_datetime(daten['Datum'])
daten.sort_values(by="Datum", ascending= True)
我尝试了其他方法来对我的数据集进行排序或转换,但screenshot 然后 Python 假定月份为几天,反之亦然,因此我最终仍然会得到错误的结果(例如强制格式和 strftime)。
【问题讨论】:
-
您是否尝试过使用 pd.to_datetime(daten['Datum'], dayfirst=True)?
-
to_datetime() 函数有一个参数(格式),您可以将要格式化的日期时间的格式传递给该参数,以便它知道如何解析。
-
pd.to_datetime返回一个datetime因此它不会更新您的daten数据框。操作不是in_place。 -
pd.read_csv()有parse_dates选项,并且您需要dayfirst = True用于 dd.mm.yyyy 格式。您可能需要infer_datetime_format = True来处理点分隔符。一般来说,您不需要在读取 CSV 后在列上追溯运行to_datetime()- 这会浪费大量内存来临时存储日期字符串。 -
@Matthew Borish:是的,我这样做了,它对日期的顺序没有影响。
标签: python pandas csv datetime-conversion