如何将Datetime列标题(例如2007-03-01 00:00:00)转换为Date-Month-Year格式,即2007-03-01?
我尝试过
df=pd.DataFrame({'Company Name':['3M India Ltd.','A B B India Ltd.'],'2007-03-01 00:00:00':[1571.30,710.20],'2007-04-01 00:00:00':[710.20,818.13]})
df.columns=pd.to_datetime.date(df.columns)
但是显示错误AttributeError:'function'对象没有属性'date'
答案 0 :(得分:1)
首先用set_index
而不是日期时间列来创建index
,然后使用to_datetime
,并在必要时用date
添加DatetimeIndex.date
:
df = df.set_index('Company Name')
df.columns = pd.to_datetime(df.columns).date
print (df)
2007-03-01 2007-04-01
Company Name
3M India Ltd. 1571.3 710.20
A B B India Ltd. 710.2 818.13
另一种解决方案,如果不可能的话,可以通过Series
创建columns
,然后用errors='coerce'
调用to_datetime
将所有值从列转换为日期时间,而不是返回的日期是NaT
(缺少日期时间的值),因此最后添加fillna
来将非日期时间替换为原始列名称:
s = pd.Series(df.columns)
df.columns = pd.to_datetime(s, errors='coerce').dt.date.fillna(s)
print (df)
Company Name 2007-03-01 2007-04-01
0 3M India Ltd. 1571.3 710.20
1 A B B India Ltd. 710.2 818.13
详细信息:
print (pd.to_datetime(s, errors='coerce'))
0 NaT
1 2007-03-01
2 2007-04-01
dtype: datetime64[ns]