2016-04-05 10 views
0

データフレームに指数分布からの値を入力したい。私が理解できるように、それはそのように行うことができます。applymap - 指数分布からの値でデータフレームを埋める

cumLosses1 = pd.DataFrame(np.zeros((size,size))) 
cumLosses1.applymap(np.random.exponential(scale = 1.0)) 

文書で述べたように、applymapは、要素ごとに動作することが意図されたデータフレームに関数を適用する - それは私が は、しかし、私はこれを取得したい正確に何です:

TypeError         Traceback (most recent call last) 
<ipython-input-50-fa00d9fe4e79> in <module>() 
    13 cumLosses1 = pd.DataFrame(np.zeros((size,size))) 
    14 
---> 15 cumLosses1.applymap(np.random.exponential(scale = 1.0)) 
    16 #print cumLosses1 

/home/alexdenis/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in applymap(self, func) 
    4141     x = lib.map_infer(_values_from_object(x), f) 
    4142    return lib.map_infer(_values_from_object(x), func) 
-> 4143   return self.apply(infer) 
    4144 
    4145  #---------------------------------------------------------------------- 

/home/alexdenis/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self, func, axis, broadcast, raw, reduce, args, **kwds) 
    3970      if reduce is None: 
    3971       reduce = True 
-> 3972      return self._apply_standard(f, axis, reduce=reduce) 
    3973    else: 
    3974     return self._apply_broadcast(f, axis) 

/home/alexdenis/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in _apply_standard(self, func, axis, ignore_failures, reduce) 
    4062    try: 
    4063     for i, v in enumerate(series_gen): 
-> 4064      results[i] = func(v) 
    4065      keys.append(v.name) 
    4066    except Exception as e: 

/home/alexdenis/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in infer(x) 
    4140     f = com.i8_boxer(x) 
    4141     x = lib.map_infer(_values_from_object(x), f) 
-> 4142    return lib.map_infer(_values_from_object(x), func) 
    4143   return self.apply(infer) 
    4144 

pandas/src/inference.pyx in pandas.lib.map_infer (pandas/lib.c:62578)() 

TypeError: ("'float' object is not callable", u'occurred at index 0') 

私の間違いは何ですか?

答えて

0

np.random.exponential(scale=1.0)は呼び出し可能ではありません。あなたが望む:

これらの要素が使用されていなくても、あなたのシリーズのすべての要素で「呼び出す」ことができます。

これは、これを行うには、しかし、はるかに少ない複雑になりたい:Nがあなたのサイズである

cumLosses1 = pd.DataFrame(np.random.exponential(scale=1.0, size=(N, N)))

を。

+0

ありがとうございます!私は確かにそれを複雑にしている:) –

関連する問題