gpt4 book ai didi

python - pandas.read_csv() 可以在同一列中应用不同的日期格式!这是一个已知的错误吗?如何解决?

转载 作者:行者123 更新时间:2023-12-04 11:14:24 24 4
gpt4 key购买 nike

我已经意识到,除非明确或半明确地(使用 dayfirst)声明日期列的格式,否则 读取 csv 文件时,pandas 可以将不同的日期格式应用于同一列!一行可能是 dd/mm/yyyy,而同一列中的另一行可能是 mm/dd/yyyy!
疯狂甚至无法描述它!这是一个已知的错误吗?

为了演示:下面的脚本创建了一个非常简单的表,其中包含从 1 月 1 日到 31 日的日期,采用 dd/mm/yyyy 格式,将其保存到 csv 文件,然后读回 csv。

然后我使用 pandas.DatetimeIndex 来提取日期。
好吧,前 12 天的天数为 1(当月和日都 < 13 时),然后是 13 14 等。这到底怎么可能?

我发现解决此问题的唯一方法是明确声明日期格式或仅使用 dayfirst=True 声明日期格式。但这很痛苦,因为这意味着即使我使用有史以来格式最佳的日期导入 csv,我也必须声明日期格式!有没有更简单的方法?

Windows 10 上的 Pandas 0.23.4 和 Python 3.7.1 发生在我身上

import numpy as np
import pandas as pd
df=pd.DataFrame()
df['day'] =np.arange(1,32)
df['day']=df['day'].apply(lambda x: "{:0>2d}".format(x) )
df['month']='01'
df['year']='2018'
df['date']=df['day']+'/'+df['month']+'/'+df['year']
df.to_csv('mydates.csv', index=False)

#same results whether you use parse_dates or not
imp = pd.read_csv('mydates.csv',parse_dates=['date'])
imp['day extracted']=pd.DatetimeIndex(imp['date']).day
print(imp['day extracted'])

最佳答案

默认情况下,它采用美国日期格式,如果失败,确实会在不抛出错误的情况下切换列中。虽然它通过让这个错误无声地传递打破了 Python 的禅宗,但“显式优于隐式”。因此,如果您知道您的数据具有国际格式,则可以使用 dayfirst

imp = pd.read_csv('mydates.csv', parse_dates=['date'], dayfirst=True)
对于您生成的文件,请使用带有时区指示符的 ISO 8601 格式来明确表示。

关于python - pandas.read_csv() 可以在同一列中应用不同的日期格式!这是一个已知的错误吗?如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55309199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com