无法划分长int对象

时间:2016-11-01 08:54:22

标签: python pandas long-integer

我有一个重量很大的列。如此之大,我无法将其转换为整数:

df.wtfinl.astype(int)
OverflowError: Python int too large to convert to C long

好吧,我忽略了这一点,仍然尝试创建相对权重:

df['nobsSum'] = df.groupby(df.index)['wtfinl'].sum()
df['nobsRel'] = df['wtfinl'] / df['nobsSum']

但是,似乎不支持(最后请参见错误)。最后,我想创建加权统计数据:

for col in cols:
    df[col] = dfJFROut[col] * df['nobsRel']
df.groupby(level=list(range(len(timeIndex) + 1 ))).sum()[cols + ['nobsRel']]

(当我没有使用wtfinl的高精度时,这曾经起作用了。错误:

Traceback (most recent call last):
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 652, in na_op
    raise_on_error=True, **eval_kwargs)
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/computation/expressions.py", line 210, in evaluate
    **eval_kwargs)
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/computation/expressions.py", line 63, in _evaluate_standard
    return op(a, b)
TypeError: unsupported operand type(s) for /: 'str' and 'str'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 676, in safe_na_op
    return na_op(lvalues, rvalues)
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 658, in na_op
    result[mask] = op(x[mask], _values_from_object(y[mask]))
TypeError: unsupported operand type(s) for /: 'str' and 'str'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-147-9c334d96d5fb>", line 1, in <module>
    dfJFROut['wtfinl'] / dfJFROut['nobsSum']
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 715, in wrapper
    result = wrap_results(safe_na_op(lvalues, rvalues))
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 686, in safe_na_op
    lambda x: op(x, rvalues))
  File "pandas/src/algos_common_helper.pxi", line 1176, in pandas.algos.arrmap_object (pandas/algos.c:45858)
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/pandas/core/ops.py", line 686, in <lambda>
    lambda x: op(x, rvalues))
TypeError: unsupported operand type(s) for /: 'str' and 'str'

那么为什么当它是一个长整数时它会说str?所以你确定我真正潜水数字:

df.iloc[0][['wtfinl', 'nobsSum']]
Out[152]: 

wtfinl                                    301609551731007744
nobsSum    3016095517310077444494228807945226498723699710...
Name: (2000, 30), dtype: object

df.iloc[0]['wtfinl'] / dfJFROut.iloc[0]['nobsSum']
Traceback (most recent call last):
  File "/home/foo/.conda/envs/myenv3/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-149-072b4e43bbc3>", line 1, in <module>
    dfJFROut.iloc[0]['wtfinl'] / dfJFROut.iloc[0]['nobsSum']
TypeError: unsupported operand type(s) for /: 'str' and 'str'

0 个答案:

没有答案