2017-07-11 4 views
2

データベースから情報を取得してpandasに保存するクラスオブジェクトを作成しましたので、いくつかのデータサイエンスライブラリを操作に使用できます。dtype:float64でnp.divide関数を使用したときの数値を返す

class IntDailyGoals (object): 
    def __init__(self, begin_date, end_date, store=None): 
     self.begin_date = begin_date 
     self.end_date = end_date 
     self.store = store 
     self.int_mnth_goal = pd.DataFrame(list(StoreGoalsInput.objects.values('store_number', 
                       'interest', 
                       'date'))) 
     self.int_mnth_goal['interest'] = pd.to_numeric(self.int_mnth_goal['interest']) 
     self.int_mnth_goal['date'] = pd.to_datetime(self.int_mnth_goal['date']) 
     self.mnth_goal_int =self.int_mnth_goal[(self.int_mnth_goal['date'] >= self.begin_date) & 
               (self.int_mnth_goal['date'] <= self.end_date) & 
               (self.int_mnth_goal['store_number'] == self.store.store_number)] 
     self.mnth_goal_int= self.mnth_goal_int['interest'] 
     self.tot_workingdays = np.busday_count(np.datetime64(self.begin_date), 
               np.datetime64(self.end_date), 
               weekmask='Mon Tue Wed Thu Fri Sat') 
     self.div_intmnthgoal_workingdays = round(np.divide(self.mnth_goal_int, self.tot_workingdays),2) 


    def get_div_goalsint_wdays(self): 
     div_goalsint_wdays = self.div_intmnthgoal_workingdays 
     return div_goalsint_wdays 

    def __str__(self): 
     return self.get_div_goalsint_wdays() 

これが返されます:私はちょうどこれはDjangoのテンプレートに表示されているとして、整数6558.4を返すためにそれを必要と

2 6558.4 
Name: interest, dtype: float64 

def get_div_goalsint_wdays(self): 
    div_goalsint_wdays = self.div_intmnthgoal_workingdays['interest'] 
    return div_goalsint_wdays 

が、私は単一の値を持つKeyError: 'interest'

答えて

0

あなたが記述結果はパンダのシリーズを取得:

私はこれを試してみました。
それが含まれているfloat値を取得するには、使用する必要があります

self.div_intmnthgoal_workingdays.iloc[0] 
+0

エイドリアンマティサール、ありがとう! .ilocについての理解を深める必要があります。あなたは正しい方向に私を指摘してくれました。 –

+0

'iloc'は、整数位置によるインデックス付け(0からlength-1まで)です。 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.iloc.html?highlight=iloc#pandas.Series.iloc –

+0

もう一度おねがいします!私が取ったデータサイエンスコースでこのことを簡単に覚えています。私は私の問題の一部が今までのすべてが理論だったと信じています。これは、このように使用されていることを確認するための進歩ですので、私はあなたに感謝し、他の人は助けます! –

0

あなたは.valuesプロパティまたは.tolist方法を使用することによって(インデックスなし)の値を取得することができます。私はこのSeriesている場合

例えば:

>>> s 
2 3 
dtype: int64 

を、値は、次のとおり

>>> s.values 
array([3], dtype=int64) 
>>> s.tolist() 
[3] 

これは、任意の他の配列のようなクラスのようにインデックスを付けることができる。

>>> s.values[0] 
3 
>>> s.tolist()[0] 
3 
関連する問題