首页 > 解决方案 > 将 pandas 中的列转换为具有特定格式的 to_datetime

问题描述

我有以下代码:

import pandas as pd
import datetime
df = pd.read_html("https://en.wikipedia.org/wiki/List_of_presidents_of_the_United_States")[1]
df = df[:-1]
df.rename(columns={'Presidency[a].1':"Term"}, inplace = True)
df[['Start', 'End']] = df.Term.str.split("–", expand = True)
df['Start'] = pd.to_datetime(df['Start'].str.strip(), format = '%B %d, %Y', dayfirst = False)

当我运行此代码时,我收到以下错误:

ValueError: unconverted data remains: [i]

请指教

标签: pythonpandasdatetime

解决方案


当我检查数据时,它有一些嘈杂的条目,例如:

 'March 4, 1913',
 'March 4, 1913',
 'March 4, 1921',
 'August 2, 1923[r]',
 'August 2, 1923[r]',

您将不得不通过拆分来清除它们 df.Start = pd.Series([i.split('[')[0] for i in df.Start.tolist()])

然后它应该可以正常工作。查看输出:

In [28]: df.Start = pd.to_datetime(df['Start'].str.strip(), format = '%B %d, %Y', dayfirst = False)

In [29]: df.Start
Out[29]: 
0    1789-04-30
1    1789-04-30
2    1797-03-04

推荐阅读