早上好!
我正在使用在本地 PC 和 ssh 服务器中运行的代码(使用 python 3.8)。有一点,我正在使用下一段代码从泡菜加载数据:
from os.path import exists
import _pickle as pickle
def load_pickle(pickle_file):
if exists(pickle_file):
with open(pickle_file, 'rb') as f:
loaded_dic = pickle.load(f)
return loaded_dic
else:
return 'Pickle not found'
Run Code Online (Sandbox Code Playgroud)
pickle_file是带有泡菜路径的字符串。如果pickle 存在,函数返回一个字典,如果它不存在,它返回字符串'Pickle not found'。
在我的本地 PC 中,代码运行良好,加载 dict 没有问题。但是,在 ssh 服务器中,理论上,dict 已加载,但是,如果我尝试访问它,只需键入loaded_dic,它就会引发以下错误:
AttributeError: 'NoneType' object has no attribute 'axes'
Run Code Online (Sandbox Code Playgroud)
因此,我的其余代码在尝试使用变量时失败loaded_dic。
非常感谢您提前!
我有一个类似的问题。对我来说,当我将 Pandas DataFrames 存储在字典中并将这个 dict 保存为带有 Pandas 版本“1.1.1”的泡菜时,就会发生这种情况。
当我在另一台服务器上阅读带有 Pandas 版本“0.25.3”的字典泡菜时,我得到了同样的错误。
两者都有pickle 4.0版,除了升级到类似的pandas版本之外,我还没有解决方案。
我做了一个小例子,当我只存储一个 DataFrame 时也会发生这种情况,将它保存在一台机器上:
import pandas as pd
print("Pandas version", pd.__version__)
df = pd.DataFrame([1, 2, 3])
df.to_pickle('df.pkl')
Run Code Online (Sandbox Code Playgroud)
熊猫版本 1.1.1
然后将其加载到另一台机器上:
import pandas as pd
print("Pandas version", pd.__version__)
df = pd.read_pickle('df.pkl')
print(type(df))
Run Code Online (Sandbox Code Playgroud)
Pandas 版本 0.25.3
<class 'pandas.core.frame.DataFrame'>
print(len(df))
Run Code Online (Sandbox Code Playgroud)
导致此错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-8-9f6b6d8c3cd3> in <module>
----> 1 print(len(df))
/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py in __len__(self)
994 Returns length of info axis, but here we use the index.
995 """
--> 996 return len(self.index)
997
998 def dot(self, other):
/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py in __getattr__(self, name)
5173 or name in self._accessors
5174 ):
-> 5175 return object.__getattribute__(self, name)
5176 else:
5177 if self._info_axis._can_hold_identifiers_and_holds_name(name):
pandas/_libs/properties.pyx in pandas._libs.properties.AxisProperty.__get__()
AttributeError: 'NoneType' object has no attribute 'axes'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2804 次 |
| 最近记录: |