这个问题的另一个版本没有得到回答,最初的海报没有给出完整的代码示例.
我有一个函数,用于导入电子表格以进行格式化。现在,电子表格可以分为两种形式:
代码看起来就像
def func1(spreadsheet):
if type(spreadsheet) == pd.DataFrame:
df = spreadsheet
else:
df_ext = os.path.splitext(spreadsheet)[1]
etc. etc.如果我使用DataFrame运行此函数,则会得到以下错误:
---> 67 if type(spreadsheet) == pd.DataFrame: df = spreadsheet
68 else:
/opt/anaconda3/lib/python3.7/posixpath.py in splitext(p)
120
121 def splitext(p):
--> 122 p = os.fspath(p)
123 if isinstance(p, bytes):
124 sep = b'/'
TypeError: expected str, bytes or os.PathLike object, not DataFrame它为什么要这么做?
发布于 2020-10-28 17:54:43
因此,一种方法是将其与字符串进行比较,然后在one条件下读取dataframe。另一种方法是使用isinstance
In [21]: dict1
Out[21]: {'a': [1, 2, 3, 4], 'b': [2, 4, 6, 7], 'c': [2, 3, 4, 5]}
In [24]: df = pd.DataFrame(dict1)
In [28]: isinstance(df, pd.DataFrame)
Out[28]: True
In [30]: isinstance(os.getcwd(), pd.DataFrame)
Out[30]: False所以,在你的情况下,就这么做吧
if isinstance(spreadsheet, pd.DataFrame)发布于 2020-10-28 18:01:10
这一行是问题所在:
if type(spreadsheet) == pd.DataFrame: dataframe的类型是pandas.core.frame.DataFrame。pandas.DataFrame是一个类,它在调用数据时返回数据。
这两种方法中的任何一种都能奏效:
if type(spreadsheet) == type(pd.DataFrame()):
if type(spreadsheet) == pd.core.frame.DataFrame:https://stackoverflow.com/questions/64578491
复制相似问题