在熊猫数据框中更新日期格式

时间:2020-08-22 11:26:15

标签: python pandas

我正在尝试使用熊猫在df中更改日期格式。我当前的代码如下:

data = pd.read_csv('pub?gid=31644116&single=true&output=csv', 
                 usecols=[0,1,2], 
                 header=0,
                 encoding="utf-8-sig",
                 index_col='Day Index')


data['Revenue'] = data['Revenue'].str.replace(',','').str.replace('£','').astype('float')
data['E-commerce Conversion Rate'] = data['E-commerce Conversion Rate'].str.replace('%','').astype('float')

data.apply(pd.to_numeric)

print("we have a total of:", len(data), " samples")

data.head()

并返回此:

we have a total of: 109  samples
Revenue E-commerce Conversion Rate
Day Index       
01/05/2020  4396.89 0.99
02/05/2020  7117.02 1.60
03/05/2020  3248.22 1.04
04/05/2020  8843.80 1.93
05/05/2020  5863.42 1.54

我想将日期格式从D / M / Y更新为Y-M-D。当我添加以下行时,出现以下错误:

data['Day Index']=pd.to_datetime(data['Day Index'].astype(str), format='%y-%m-%d')

KeyError: 'Day Index'

During handling of the above exception, another exception occurred:

是因为将“日索引”列设置为index_col造成了问题吗?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

如果需要转换索引值,请使用data.index并更改匹配日期DD/MM/YYYY的日期时间格式:

data.index=pd.to_datetime(data.index, format='%d/%m/%Y')

在您的代码中也未将转换后的值分配给数字,请使用:

data = data.apply(pd.to_numeric)

答案 1 :(得分:0)

您可以尝试传递yearfirst参数而不是格式。希望这会有所帮助:

    yearfirst=True