나는 팬더의 dataframe 'DT =이 myfunc을()'이 있고, 아래로 IDLE에서 화면 출력을 복사 플로트 부문 :왜 팬더가 한 케이스에서는 'ZeroDivisionError'가 발생하지만 다른 케이스에서는 그렇지 않습니다.
>>> from __future__ import division
>>> dt = __get_stk_data__(['*'], frq='CQQ', from_db=False) # my function
>>> dt = dt[dt['ebt']==0][['tax','ebt']]
>>> type(dt)
<class 'pandas.core.frame.DataFrame'>
>>> dt
tax ebt
STK_ID RPT_Date
000719 20100331 0 0
20100630 0 0
20100930 0 0
20110331 0 0
002164 20080331 0 0
300155 20120331 0 0
600094 20090331 0 0
20090630 0 0
20090930 0 0
600180 20090331 0 0
600757 20110331 0 0
>>> dt['tax_rate'] = dt.tax/dt.ebt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python\Lib\site-packages\pandas\core\series.py", line 72, in wrapper
return Series(na_op(self.values, other.values),
File "D:\Python\Lib\site-packages\pandas\core\series.py", line 53, in na_op
result = op(x, y)
ZeroDivisionError: float division
>>>
이 팬더는 'ZeroDivisionError을 제기 이유를 알아 내기 위해 나에게 많은 시간을 비용 '팬더 샘플 코드 아래에 아주 잘 작동하는 동안 :
tuples = [('000719','20100331'),('000719','20100930'),('002164','20080331')]
index = MultiIndex.from_tuples(tuples, names=['STK_ID', 'RPT_Date'])
dt =DataFrame({'tax':[0,0,0],'ebt':[0,0,0]},index=index)
dt['tax_rate'] = dt.tax/dt.ebt
>>> dt
ebt tax tax_rate
STK_ID RPT_Date
000719 20100331 0 0 NaN
20100930 0 0 NaN
002164 20080331 0 0 NaN
>>>
내가 팬더 제공 기대'ZeroDivisionError는 '첫 번째 경우에 발생하는'이유는 두 경우 모두에 대한 'NaN이를? 그것을 고치는 방법? 코드 아래
은 & 화면 출력
def __by_Q__(df):
''' this function transforms the input financial report data (which
is accumulative) to qurterly data
'''
df_q1=df[df.index.map(lambda x: x[1].endswith("0331"))]
print 'before diff:\n'
print df.dtypes
df_delta = df.diff()
print '\nafter diff: \n'
print df_delta.dtypes
q1_mask = df_delta.index.map(lambda x: x[1].endswith("0331"));
df_q234 = df_delta[~q1_mask]
rst = concat([df_q1,df_q234])
rst=rst.sort_index()
return rst
화면 출력 디버깅하는 추가 정보를 제공하기 위해 부착된다 : 그 동작을 재현 아베 아니었다
before diff:
sales float64
discount object
net_sales float64
cogs float64
ebt float64
tax float64
after diff:
sales object
discount object
net_sales object
cogs object
ebt object
tax object
첫 번째 예제에서 dt.dtypes를 확인할 수 있습니까? 나는 행동을 재현 할 수 없다. –
'dt.dtypes'는 '세금'을 표시하고 'ebt'는 '개체'입니다 (이유를 모르겠습니다). 이메일을받을 수 있습니까? 전체 소스 코드와 SQLite 데이터 파일을 보내면 시나리오를 재현 할 수 있습니다. 일반적으로 프로그램은 SQLite 백엔드에서 재무 보고서 데이터를 가져 와서 재무 비율을 계산하려고 시도합니다 ... – bigbug