Python 日期格式不';t匹配和熊猫使用错误的世纪

Python 日期格式不';t匹配和熊猫使用错误的世纪,python,pandas,datetime,Python,Pandas,Datetime,我是python新手,清理一些数据很困难。我打算连接两个数据集,然后对它们进行一些分析。日期栏的格式不同,我正在努力处理这个问题。问题是,在第二个数据集中,年份只有两位数,当我使用pd.to_datetime时,它有时会猜错世纪。使这两种格式匹配的最佳方法是什么?我想用这个做一些时间序列的东西。没有重叠,因为该数据集中最早的日期是1939年 两者都是用Dtype对象读入的 示例数据 import pandas as pd data1 = {'col1': ['row1', 'row2', '

我是python新手,清理一些数据很困难。我打算连接两个数据集,然后对它们进行一些分析。日期栏的格式不同,我正在努力处理这个问题。问题是,在第二个数据集中,年份只有两位数,当我使用pd.to_datetime时,它有时会猜错世纪。使这两种格式匹配的最佳方法是什么?我想用这个做一些时间序列的东西。没有重叠,因为该数据集中最早的日期是1939年

两者都是用Dtype对象读入的

示例数据

import pandas as pd 

data1 = {'col1': ['row1', 'row2', 'row3'], 'col2': ['1939, May', '1940, June', '2015, March'],}
df1 = pd.DataFrame(data1, columns = ['col1', 'col2'])
df1
    col1    col2
0   row1    1939, May
1   row2    1940, June
2   row3    2015, March

data2 = {'col1': ['row1', 'row2', 'row3'], 'col2': ['Dec-1939', 'Apr-1980', 'Aug-2011'],}
df2 = pd.DataFrame(data2, columns = ['col1', 'col2'])
df2

col1    col2
0   row1    Dec-1960
1   row2    Apr-1980
2   row3    Aug-2011

这在df1
pd.to_datetime(df['col2',format='%Y,%B',errors='concurve')
上运行良好,但当我更改df2的
format='%B-%Y'
时,它将从1939更改为2039。我认为最好在连接两个数据帧之前创建一个匹配的格式。

您是否尝试忽略了
格式
?熊猫通常只能自动探测

df1:

df1.col2=pd.to_datetime(df1.col2)
#col1 col2
#第0行1939-05-01
#第2行1940-06-01
#2第3行2015-03-01
df2:

df2.col2=pd.to_datetime(df2.col2)
#col1 col2
#第0行1939-12-01
#第2行1980-04-01
#第2行2011-08-01

在您的情况下应为“Y”

pd.to_datetime(df2['col2'], format='%b-%Y', errors='coerce')
Out[9]: 
0   1939-12-01
1   1980-04-01
2   2011-08-01
Name: col2, dtype: datetime64[ns]

规则是两位数的日期从1970年到2069年。在导入数据之前,您必须先修复数据。这给了我2062个日期。也许我需要更新一些东西?我应该提一下,我在实际的数据集上尝试了这个方法,数据集大约有6k行。@pkpto39它在玩具示例中正常工作吗?或者它与简化的玩具示例持平?你的pd是什么版本?