如何将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'
最佳答案
首先通过不使用index
的datetimes列创建set_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
,然后用to_datetime
调用errors='coerce'
,将列中的所有值转换为日期时间,否则不返回日期。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]
关于python - 如何将Datetime列标题(例如2007-03-01 00:00:00)转换为Date-Month-Year格式,即2007-03-01,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54720645/