Pandas的错误日期

2024-05-14 22:56:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取一个csv文件,其中有一个日期列。日期存储为1962年8月27日、1959年9月12日和1965年7月15日。当我使用tou datetime函数时,日期被转换为8/27/2062、9/12/2059和7/15/2065。我不知道为什么会这样。是因为年份变了还是什么?你知道吗

示例:

planets = pd.read_csv('Planets.csv',usecols = ['FirstVisited'])
0    3/29/74
1    8/27/62
2        NaN
3    9/12/59
4    7/15/65
5    12/4/73
6     9/1/79
Name: FirstVisited, dtype: object

pd.to_datetime(planets.FirstVisited)
0   1974-03-29
1   2062-08-27
2          NaT
3   2059-09-12
4   2065-07-15
5   1973-12-04
6   1979-09-01

检查索引1、3和4


Tags: 文件csv函数name示例readdatetimenan
3条回答

其实这和你的代码无关! 它是编程语言(基本上是C语言)中的“时间起源”。C的time.h标题中的时间来源是“1970年1月1日”。这就是为什么你在那之前的约会结果是错误的。 我建议您手动更正这些时间。。。比如:

import pandas
x, y= pandas.readcsv('Planets.csv'), []
for i in x.FirstVisited:
    i= i.split('/')
    i[0], i[1], i[2]= '19'+i[2], i[0], i[1]
    y.append('-'.join(i))
print(y)

这是因为大多数实现都假设00-68年属于2000年,69-99年属于1900年。如果所有日期都是19xx,那么在更改为日期之前,您可以在字符串的年份部分添加后缀“19”

如果所有的日期都是19xx,你会怎么做


import pandas as pd

planets = {'FirstVisited':['8/2/62', '9/12/59', '9/12/88']}

planets = pd.DataFrame(planets)


planets['FirstVisited'] = planets['FirstVisited'].str[0:-2] + '19' + planets['FirstVisited'].str[-2:]


planets['FirstVisited'] = pd.to_datetime(planets['FirstVisited'], format = "%d/%m/%Y", errors = 'coerce')



print(planets)


您可以使用pandasto_datetime函数,参数errors='importe'将非日期转换为NaTnull值。检查我的回答如下。你知道吗

import pandas as pd

data = {'dates':["8/27/1962", "9/12/1959", "Nan"]}
df = pd.DataFrame(data)

df['dates'] = pd.to_datetime(df.dates,errors='coerce')
#drop Nan from column
df = df.dropna(subset=['dates'])

lst = df['dates'].dt.strftime('%Y-%m-%d')

print(lst)

相关问题 更多 >

    热门问题