设置类型无序 - 熊猫中的错误



我知道我必须迈出这一步,但我不知道该怎么做:

通过使用NASA空间科学数据协调档案,我们收集了有关每个任务中使用的每个模块的信息。就像创建示例表时一样,创建六个新列,三个用于登月模块,三个用于命令模块:

  • 模块名称
  • 模块质量
  • 模块质量差异

用 0 填充任何 NaN 值:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~AppDataLocalTemp/ipykernel_8184/2992438938.py in <module>
----> 1 missions['Lunar module (LM)'] = {'Eagle (LM-5)', 'Intrepid (LM-6)', 'Antares (LM-8)', 'Falcon (LM-10)', 'Orion (LM-11)', 'Challenger (LM-12)'}
2 missions['LM mass (kg)'] = {15103, 15235, 15264, 16430, 16445, 16456}
3 missions['LM mass diff'] = missions['LM mass (kg)'].diff()
4 missions['LM mass diff'] = missions['LM mass diff'].fillna(value=0)
5 
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in __setitem__(self, key, value)
3610         else:
3611             # set column
-> 3612             self._set_item(key, value)
3613 
3614     def _setitem_slice(self, key: slice, value):
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in _set_item(self, key, value)
3782         ensure homogeneity.
3783         """
-> 3784         value = self._sanitize_column(value)
3785 
3786         if (
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in _sanitize_column(self, value)
4508         if is_list_like(value):
4509             com.require_length_match(value, self.index)
-> 4510         return sanitize_array(value, self.index, copy=True, allow_2d=True)
4511 
4512     @property
C:ProgramDataMiniconda3libsite-packagespandascoreconstruction.py in sanitize_array(data, index, dtype, copy, raise_cast_failure, allow_2d)
557         if isinstance(data, (set, frozenset)):
558             # Raise only for unordered sets, e.g., not for dict_keys
--> 559             raise TypeError(f"'{type(data).__name__}' type is unordered")
560 
561         # materialize e.g. generators, convert e.g. tuples, abc.ValueView
TypeError: 'set' type is unordered

使用的代码:

missions['Lunar module (LM)'] = ['Eagle (LM-5)', 'Intrepid (LM-6)', 'Antares (LM-8)', 'Falcon (LM-10)', 'Orion (LM-11)', 'Challenger (LM-12)']
missions['LM mass (kg)'] = {15103, 15235, 15264, 16430, 16445, 16456}
missions['LM mass diff'] = missions['LM mass (kg)'].diff()
missions['LM mass diff'] = missions['LM mass diff'].fillna(value=0)
missions['Command module (CM)'] = ['Columbia (CSM-107)', 'Yankee Clipper (CM-108)', 'Kitty Hawk (CM-110)', 'Endeavor (CM-112)', 'Casper (CM-113)', 'America (CM-114)']
missions['CM mass (kg)'] = {5560, 5609, 5758, 5875, 5840, 5960}
missions['CM mass diff'] = missions['CM mass (kg)'].diff()
missions['CM mass diff'] = missions['CM mass diff'].fillna(value=0)
missions

儿科做用户:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~AppDataLocalTemp/ipykernel_8184/3771249595.py in <module>
1 missions['Lunar module (LM)'] = ['Eagle (LM-5)', 'Intrepid (LM-6)', 'Antares (LM-8)', 'Falcon (LM-10)', 'Orion (LM-11)', 'Challenger (LM-12)']
----> 2 missions['LM mass (kg)'] = {15103, 15235, 15264, 16430, 16445, 16456}
3 missions['LM mass diff'] = missions['LM mass (kg)'].diff()
4 missions['LM mass diff'] = missions['LM mass diff'].fillna(value=0)
5 
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in __setitem__(self, key, value)
3610         else:
3611             # set column
-> 3612             self._set_item(key, value)
3613 
3614     def _setitem_slice(self, key: slice, value):
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in _set_item(self, key, value)
3782         ensure homogeneity.
3783         """
-> 3784         value = self._sanitize_column(value)
3785 
3786         if (
C:ProgramDataMiniconda3libsite-packagespandascoreframe.py in _sanitize_column(self, value)
4508         if is_list_like(value):
4509             com.require_length_match(value, self.index)
-> 4510         return sanitize_array(value, self.index, copy=True, allow_2d=True)
4511 
4512     @property
C:ProgramDataMiniconda3libsite-packagespandascoreconstruction.py in sanitize_array(data, index, dtype, copy, raise_cast_failure, allow_2d)
557         if isinstance(data, (set, frozenset)):
558             # Raise only for unordered sets, e.g., not for dict_keys
--> 559             raise TypeError(f"'{type(data).__name__}' type is unordered")
560 
561         # materialize e.g. generators, convert e.g. tuples, abc.ValueView
TypeError: 'set' type is unordered

missions['Lunar module (LM)'] = ...行更改为:

missions['Lunar module (LM)'] = ['Eagle (LM-5)', 'Intrepid (LM-6)', 'Antares (LM-8)', 'Falcon (LM-10)', 'Orion (LM-11)', 'Challenger (LM-12)']

{...}创建一个set,如错误消息所示,该按顺序排序。另一方面,[...]创造了一个list,它不是有序的,这是熊猫所期望的。

最新更新