2016-04-08 5 views
1
# Give day of the week 
def DOW(df): 
    DOW = pd.Series(datetime.datetime.strptime(df['indx'],'%Y%m%d').strftime('%A')) 
    df = df.join(DOW) 
    return df 

Я вызываю эту функцию из другого скрипта, как, где d мой dataframe, который я прохожу функционировать ДОУExtract день недели из колонны в dataframe и положить в другой колонке

d = TA.DOW(d) 

Он бросает ошибка . что может быть решение для той же

DOW=pd.Series(datetime.datetime.strptime(df['indx'],'%Y%m%d').strftime('%A')) 
TypeError: must be string, not Series 
+1

Вы можете просто позвонить '' dt.dayofweek' или dt.strftime ('% A') 'в этом столбце, если dtype уже является datetime, поэтому' df ['indx']. Dt.strftime ('% A') 'должен работать – EdChum

+0

Ошибка также сама по себе, вы пытаетесь передать «Серию», другими словами, весь столбец для функции, которая берет строку. – EdChum

ответ

1

Я думаю, что вы можете сначала преобразовать столбец indxto_datetime, а затем использовать dt.strftime, как указано EdChum:

print df 
     indx Value 
0 20020101 3.00 
1 20020102 3.50 
2 20020103 3.30 
3 20100101 4.96 
4 20100102 4.98 

df['new'] = pd.to_datetime(df['indx'], format='%Y%m%d').dt.strftime('%A') 
print df 
     indx Value  new 
0 20020101 3.00 Tuesday 
1 20020102 3.50 Wednesday 
2 20020103 3.30 Thursday 
3 20100101 4.96  Friday 
4 20100102 4.98 Saturday 

 Смежные вопросы

  • Нет связанных вопросов^_^