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