断言错误:新值的形状必须与管理器形状兼容



熊猫应用错误 我有一个包含以下列的熊猫数据框

col = ["File_Path", "Function_Body", "Prediction", "Line_Number"]

我正在列函数体上应用 get_prediction(( 函数,它返回三个值

  1. 列表(预测(:例如。[1,1,0,0,0]
  2. 列表(置信度(:例如。[64.000, 88.000,0,0,0]
  3. 列表列表(带行号的前 5 个令牌(:[['int', 5], ['ret', 6],['char', 5],['sum', 4],['i', 2]]

以下代码段,对于一个数据集运行良好,但对于其他数据集给出主题错误。

final_df["Prediction"],  final_df["Confidence"], final_df["Tokens"] = zip(*final_df["Function_Body"].apply(lambda x:get_prediction(x)))

错误:

File "nginx_fast.py", line 404, in <module>
final_df["Prediction"],  final_df["Confidence"], final_df["Tokens"] = zip(*final_df["Function_Body"].apply(lambda x:get_prediction(x)))
File "/usr/local/lib/python3.6/dist-packages/pandas/core/frame.py", line 2938, in __setitem__
self._set_item(key, value)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/frame.py", line 3001, in _set_item
NDFrame._set_item(self, key, value)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py", line 3624, in _set_item
self._data.set(key, value)
File "/usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py", line 1067, in set
"Shape of new values must be compatible with manager shape"
AssertionError: Shape of new values must be compatible with manager shape

我在 return 语句之前检查了返回值的形状和类型,对我来说看起来不错。

我也遇到了这个问题。这就是我解决它的方式

final_df["Prediction"],  final_df["Confidence"], c = zip(*final_df["Function_Body"].apply(lambda x:get_prediction(x)))
final_df["Tokens"] = list(c)

由于输出"c"是元组,因此数据帧应获取列表,因此应将元组转换为列表。

最新更新