2016-04-08 4 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は、私はDOWデータフレームの列からの週の抽出日と別の列に

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'だけで呼び出すことができますdtypeが既にdatetimeなので 'df ['indx'] .dt.strftime( '%A')'は動作します – EdChum

+0

エラーは自明です。列全体を文字列をとる関数に渡して 'Series'を渡します。 – EdChum

答えて

1

のための解決策になることができ、私はあなたが最初の列indxto_datetimeを変換してからEdChum述べたようにdt.strftimeを使用することができると思う:

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 
関連する問題