2015-09-04 64 views
0

我有一个熊猫日期时间对象,df ['issue_date'],我想创建一个对象,只包含对象的月份和年份,'0'在所有月份之前用单个数字。所有年份都> 2000 我已经试过:Python解析月,从datetime64 [ns]

[In] 
import datetime 

df['issue_year'] = pd.DatetimeIndex(lcd['issue_date']).year.astype(int) 
df['issue_month'] = pd.DatetimeIndex(lcd['issue_date']).month.astype(int) 
df['issue_MMYY'] = df['issue_month']*1000+df['issue_year'] % 2000 

但这种感觉(非常)缺憾和缓慢的,并在前面也没有垫0。一般来说,日期时间对象给我适合....任何人都可以帮助更优雅的东西?

+0

如何'LCD [ 'ISSUE_DATE']'看 – taesu

+0

还有一种简便的方法来提取有关'DateTime'信息。这可以通过使用'dt'完成。例如,可以像这个'lcd.issue_date.dt.year'' lcd.issue_date.dt.month'那样得到年份和月份数字。 – Romain

回答

1
lcd = pd.DataFrame({'issue_date': pd.date_range('2015-09-01', periods=4, freq='Q')}) 
lcd.issue_date.apply(lambda x: x.strftime('%m%Y')) 

结果:

0 092015 
1 122015 
2 032016 
3 062016 
+0

鉴于OP命名了列'issue_MMYY',我认为格式应该是%m%y。 – Alexander

+0

@Alexander - 明白了,谢谢! – GPB