发生异常: ValueError setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (300, 2) + inhomogeneous part. File "C:\Users\lenovo\Desktop\实习\python\数据处理.py", line 20, in Depolarization x_m = np.nanmedian(series) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lenovo\Desktop\实习\python\数据处理.py", line 137, in <module> full_data['log_mkt_cap']=full_data.groupby('date')['log_mkt_cap'].apply(Standardization(Depolarization(full_data.groupby('date')['log_mkt_cap'],5))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (300, 2) + inhomogeneous part.
时间: 2023-08-04 22:04:42 浏览: 147
python 使用Flask 出现 ValueError: Expected object or value 问题解决
根据错误信息,发生了一个 `ValueError` 异常。异常消息提示在 `np.nanmedian()` 函数中出现了数组元素设置错误,请求的数组在2维后具有不均匀的形状。
从错误信息中可以看出,问题出现在 `Depolarization()` 函数的第一行代码,即 `x_m = np.nanmedian(series)`。
这个错误通常发生在尝试将一个序列或数组赋值给一个单个的元素时。在这种情况下,`series` 应该是一个一维数组,而不是一个二维数组。
我注意到你在调用 `Depolarization()` 函数时使用了 `full_data.groupby('date')['log_mkt_cap']`,这将返回一个分组对象而不是一个数组。因此,在应用 `Depolarization()` 函数之前,你需要选择要处理的特定列,并将其转换为一维数组。
你可以尝试修改代码如下:
```python
full_data['log_mkt_cap'] = full_data.groupby('date')['log_mkt_cap'].transform(lambda x: Depolarization(x, 5))
```
这里使用 `transform()` 函数将每个分组中的 `'log_mkt_cap'` 列传递给 `Depolarization()` 函数进行处理,并将处理后的结果赋值给 `'log_mkt_cap'` 列。
请尝试这个修改,并确保在 `Depolarization()` 函数调用之前,`series` 是一个一维数组。如果问题仍然存在,请提供更多的代码和数据示例,以便我能够更好地帮助你解决问题。
阅读全文