2016-08-01 6 views
0

데이터 프레임에 여러 datettime 열이 있고 datetime을 csv로 내보낼 때 datetime을 월/일/년에서 월/연도로 변환해야합니다. 이것을 할 수 있습니까?Pandas Dataframe 및 DateTime 개체 변환

나는이 시도했다 : 나는 내 보낸 CSV 볼 때

if date_mask == "MMM": 
    df[name].apply(lambda x: x.strftime('%b %Y')) 
else: 
    df[name].apply(lambda x: x.strftime('%m %Y')) 

나는 여전히 이전 날짜 값을 참조하십시오.

방법에 대한 아이디어가 있으십니까?

감사

######################################## ##################

솔루션

def modify_date(x): 
    try: 
     if pd.isnull(x) == False: 
      return x.strftime('%b %Y') 
     else: 
      print pd.NaT 
    except: 
     return pd.NaT 

df = pd.DateFrame.from_records(<some list from database>) 

df[name] = df[name].apply(modify_date) 

모든 도움을 주셔서 감사를! 모든 도움

+0

df [이름]'df [이름] = df [이름] .apply (람다 x : x.strftime ('% m % Y'))' – bernie

+0

결과를 지정해야합니다. 왜냐하면 그것은'DataFrame' inplace를 수정하지 않기 때문입니다. –

+0

@bernie 나는 그것에게 시험을 줄 것이다! –

답변

0

솔루션

def modify_date(x): 
    try: 
     if pd.isnull(x) == False: 
      return x.strftime('%b %Y') 
     else: 
      print pd.NaT 
    except: 
     return pd.NaT 

df = pd.DateFrame.from_records(<some list from database>) 

df[name] = df[name].apply(modify_date) 

감사합니다!

+0

@bernie -이 대답은 매우 느립니다. 스크립트는 400K 레코드에서 1 분에서 4 분으로 이동합니다. 6 datetime 열이 있습니다. 이 속도를 높이는 방법에 대한 아이디어가 있습니까? –

+0

이것은 작동하지 않습니다 :'df [name] = df [name] .dt.strftime ('% b % Y')'? – ptrj

+0

@ptrj : 거기에 NaT가 있기 때문에 그렇지 않습니다. – bernie

관련 문제