如何将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/

10-11 19:32