Python 强制使用空值的熊猫中的日期列
我正在阅读Excel文件,阅读时需要正确处理日期。通常情况下,列中会稀疏地填充日期,其余的都是空白。如果我读这个,它总是作为Python 强制使用空值的熊猫中的日期列,python,pandas,Python,Pandas,我正在阅读Excel文件,阅读时需要正确处理日期。通常情况下,列中会稀疏地填充日期,其余的都是空白。如果我读这个,它总是作为对象dtype读取。我希望正确地将它们更改为datetime64[ns],同时不要错误地转换实际的数字列 d = {1: {'DateCol': '02/01/2014', 'NotDateCol': 12457}, 2: {'DateCol': np.nan, 'NotDateCol': 45677}} df = pd.DataFrame.from_dict(d,orie
对象
dtype读取。我希望正确地将它们更改为datetime64[ns]
,同时不要错误地转换实际的数字列
d = {1: {'DateCol': '02/01/2014', 'NotDateCol': 12457}, 2: {'DateCol': np.nan, 'NotDateCol': 45677}}
df = pd.DataFrame.from_dict(d,orient='index')
In [96]: df.dtypes
Out[96]:
NotDateCol int64
DateCol object
dtype: object
好的,如果你看这个,你可以清楚地看到DateCol是一个日期:
NotDateCol DateCol
1 12457 02/01/2014
2 45677 NaN
现在,我需要一些智能方法将日期列转换为日期,而不必事先知道标题名称或类型
尝试仅使用to_datetime将整数强制为日期,如下所示:
In [97]: for col in df.columns:
df[col] = pd.to_datetime(df[col])
....:
In [98]: df
Out[98]:
NotDateCol DateCol
1 1970-01-01 00:00:00.000012457 2014-02-01
2 1970-01-01 00:00:00.000045677 NaT
In [99]: df.dtypes
Out[99]:
NotDateCol datetime64[ns]
DateCol datetime64[ns]
dtype: object
有没有一种非常智能的方法可以让它正常工作,能够正确地挑选出类似日期时间的列并进行转换,而不会将数字转换为1970-01-01?您需要强制执行它。根据报告: 转换日期:布尔值,默认为True 如果为True,则转换为日期,其中 可能的如果为“强制”,则强制转换,值不可转换 成为纳特 默认情况下,
convert\u ints
标志为False,因此在这种情况下:
In [51]:
d = {1: {'DateCol': '02/01/2014', 'NotDateCol': 12457}, 2: {'DateCol': np.nan, 'NotDateCol': 45677}}
df = pd.DataFrame.from_dict(d,orient='index').convert_objects(convert_dates='coerce')
In [52]:
df.dtypes
Out[52]:
NotDateCol int64
DateCol datetime64[ns]
dtype: object
那么你如何确定一个日期呢?对于带“/”的模式?加载后是否尝试过
df.convert_objects()
?@ColonelBeauvel,日期应该是显而易见的。基本上是一个非整数,可以强制为熊猫中的日期。几乎就像我说的“熊猫使用你正常的日期强制,除了整数不是日期”@JoeCondron-Yep,没有用。