【发布时间】:2018-05-16 18:22:06
【问题描述】:
我有一个数据框,其中有一列看起来像日期,但实际上是一个对象 (type 'O')。该列中的某些值的值为9999-12-31 00:00:00.000。从某种意义上说,它们是一行“无限期”有效的指标。
pd.to_datetime() 在这些值上失败并给出“日期超出范围”错误。我尝试编写一个函数,将值转换为字符串,然后检查第一个字符是否为 9,但这也不起作用。
只是为了让你相信我已经尝试过一些东西,这是我尝试过的两个功能:
def change_to_datetime(df, colname):
for index, row in df.iterrows():
string = str(row[12])
if string[0] == '9':
row[12] = '2018-01-01 00:00:00.000'
row[12] = pd.to_datetime(row[12])
return df
还有:
def change_to_datetime2(df, colname):
mask = str(df.colname)[0] == '9'
df.loc[mask, colname] = '2018-01-01 00:00:00.000'
df[colname] = pd.to_datetime(df[colname])
return df
我也在这里阅读了其他类似的问题,但它们对我没有帮助。我是熊猫的新手。
【问题讨论】:
标签: python pandas datetime dataframe