我有一個數據框,其中的列看起來像一個日期,但實際上是一個對象(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
我也曾在這裏閱讀其他類似的問題,但他們沒有幫助我。我是熊貓的新手。