我有一個如下數據框數據類型 usr_id year0 t961 00:50:03.1580001 t964 03:25:572 t335 00:55:003 t829 00:04:25.714000usr_id objectyear objectdtype: object我想將年份列數據類型轉換為日期時間。我使用了下面的代碼。timefmt = "%H:%M"test['year'] = pd.to_datetime( test['year'], format=timefmt, errors='coerce').dt.time我得到低于輸出 usr_id year0 t961 NaT1 t964 NaT2 t335 NaT3 t829 NaT如何將此列的數據時間(對象轉換為日期時間)?我怎樣才能放下秒和微秒?預期輸出 usr_id year0 t961 00:501 t964 03:252 t335 00:553 t829 00:04
2 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
將to_datetime與 Series.dt.strftime 一起使用:
timefmt = "%H:%M"
test['year'] = pd.to_datetime(test['year'], errors='coerce').dt.strftime(timefmt)
print (test)
usr_id year
0 t961 00:50
1 t964 03:25
2 t335 00:55
3 t829 00:04
或者,您可以使用 Series.str.rsplit with 按最后一個拆分,并通過索引選擇第一個列表:n=1:
test['year'] = test['year'].str.rsplit(':', n=1).str[0]
print (test)
usr_id year
0 t961 00:50
1 t964 03:25
2 t335 00:55
3 t829 00:04
或通過@Akira解決方案:
test['year'] = test['year'].astype(str).str[:5]

白豬掌柜的
TA貢獻1893條經驗 獲得超10個贊
由于列中當前沒有實際日期,因此您需要設置默認日期。然后,您可以將格式傳遞給 pandas 函數。year
to_datetime
這可以在這樣的單行中完成:
test['year'] = pd.to_datetime(test['year'].apply(lambda x: '1900-01-01 '+ x),format='%Y-%m-%d %H:%M:%S')
添加回答
舉報
0/150
提交
取消