熊猫to_datetime无法按预期工作,格式为 %d.%m.%Y



我有一个pandas数据帧,它有一个包含字符串的文本列,格式为:

28.08.1958
29.04.1958
01.02.1958
05.03.1958

我想把它解释为日期。数据帧来自于使用beautifulsoup,即我没有从csv中读取它,所以我计划使用pd.to_detime((。偶尔会有非日期条目,所以我添加了errors='gnore'。

df["Date2"] = pd.to_datetime(df["Date"], format='%d.%m.%Y', errors='ignore')

在我看来,这似乎不起作用,因为我使用了后续的排序操作:

df.sort_values(by="Date2", ascending=True)

这确实改变了顺序,但似乎是随机的,而不是日期顺序。我想知道日期之间是否有空白,所以作为预防措施,我使用了

['Date'].str.strip()

但没有改善。

我还试着添加:

inplace=True

到排序值,但这导致整列按日期的天数部分排序,这实际上告诉我没有转换到日期。

总之我认为所有输入字符串都被视为错误并被忽略。这可能意味着参数format='%d.%m.%Y'不对。

EDIT针对到目前为止的评论/答案,我找到了一种方法来诱导一个没有错误的输入数据集。这似乎还可以;Date2";列取决于该列中是否有错误:如果有非日期文本,则该列为对象类型,如果没有错误,则为datetime64[ns]

解决方案我已经设置errors="百分比"在to_datetime语句中。

试试这个:

import pandas as pd
import io
csv_data = '''                  
Date
28.08.1958
29.04.1958
01.02.1958
05.03.1958
'''
df = pd.read_csv(io.StringIO(csv_data))
df["Date2"] = pd.to_datetime(df["Date"], format='%d.%m.%Y')
df.sort_values(by="Date2", ascending=True, inplace=True)
print(df)

Date      Date2
2  01.02.1958 1958-02-01
3  05.03.1958 1958-03-05
1  29.04.1958 1958-04-29
0  28.08.1958 1958-08-28

相关内容

  • 没有找到相关文章

最新更新