我有一个重量很大的列。如此之大,我无法将其转换为整数:
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'