不能分割长整型对象

2024-04-19 01:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大重量的柱子。太大了,我不能把它转换成整数:

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'

Tags: inpypandasdfhomefoolibpackages