gpt4 book ai didi

python - 潜在错误 : pandas MultiIndex and 0-d sized values

转载 作者:行者123 更新时间:2023-12-01 05:12:48 26 4
gpt4 key购买 nike

Python 的策略是忽略 0 维数组。从技术上讲,0array(0) 之间没有区别。对于标准 pandas,这是支持的。然而,对于 MultiIndex 来说就不那么重要了。考虑一下

import numpy as np
from matplotlib import pyplot
import pandas as pd

np.random.seed(1234)
# params, initials
T = 100 # time
N = 80 # firms
TIndex = np.arange(0, T)
FIndex = np.arange(0, N)

index = pd.MultiIndex.from_product([TIndex, FIndex], names=['time', 'firm'])
df = pd.DataFrame(-999, columns=['A', 'w', 'l', 'a', 'x', 'X', 'd', 'profit'], index=index)
t, n = 0, 2
df.loc[(t,n), 'X'] = np.array(0)

pd.__version__
df.loc[(t,n), 'X']

这会给我一个回溯:

Traceback (most recent call last):
File "C:\Users\sdaro\AppData\Local\Enthought\Canopy\User\lib\site-packages\IPython\core\interactiveshell.py", line 2883, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-180-766f1cc7a0e5>", line 1, in <module>
df.loc[(t,n), 'X'] = np.array(0)
File "C:\Users\sdaro\AppData\Local\Enthought\Canopy\User\lib\site-packages\pandas\core\indexing.py", line 119, in __setitem__
self._setitem_with_indexer(indexer, value)
File "C:\Users\sdaro\AppData\Local\Enthought\Canopy\User\lib\site-packages\pandas\core\indexing.py", line 342, in _setitem_with_indexer
if is_list_like(value) and lplane_indexer != len(value):
TypeError: len() of unsized object

更新

解决第一条评论;我所说的“技术上没有区别”的意思是“在大多数情况下”,设计用于接收值的应用程序也应该接收单例。 pandas 一般支持这一点,如

所示
>>> test = pd.DataFrame(index = array([0, 1, 2]), columns=['A'])
>>> test.ix[0, 'A'] = 1
>>> test.ix[1, 'A'] = array(1)
>>> test
Out[190]:
A
0 1
1 1
2 NaN

只是在这种特殊情况下它不起作用,这就是为什么我认为这不是预期的行为。

最佳答案

在非多索引的情况下我们确实接受这一点,因此将其称为错误

问题在这里:http://github.com/pydata/pandas/issues/7218

已修复:https://github.com/pydata/pandas/pull/7219

关于python - 潜在错误 : pandas MultiIndex and 0-d sized values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com