我试过搜索,但没有看到任何相关内容,或者它可能已经跳过了我的眼睛。
所以我想要的是非常具体的。我有一个Pandas DataFrame列表,我想检查当前步骤/工作流中创建的数据帧是否已经存在于列表中,如果是,则传递或者附加到它。现在我尝试使用以下内容:
if df not in best_dfs:
# process something here
best_dfs.append(df)
else:
pass
这是你如何检查天气列表包含一些固定类型的对象。但是当我这样做时,我收到了以下错误:
Traceback (most recent call last):
File "C:/Projects/Barclays/Email Analytics/POC - Stop Cheque Classification/03_CodeBase/CodeBase/utils/FindBestDf.py", line 239, in <module>
print(obj.find_(dfs))
File "C:/Projects/Barclays/Email Analytics/POC - Stop Cheque Classification/03_CodeBase/CodeBase/utils/FindBestDf.py", line 19, in find_
r = self.__driver(list_of_df)
File "C:/Projects/Barclays/Email Analytics/POC - Stop Cheque Classification/03_CodeBase/CodeBase/utils/FindBestDf.py", line 201, in __driver
if v[0] not in best_dfs:
File "C:\Users\IBM_ADMIN\Anaconda3\lib\site-packages\pandas\core\ops.py", line 1296, in f
return self._compare_frame(other, func, str_rep)
File "C:\Users\IBM_ADMIN\Anaconda3\lib\site-packages\pandas\core\frame.py", line 3670, in _compare_frame
raise ValueError('Can only compare identically-labeled '
ValueError: Can only compare identically-labeled DataFrame objects
我如何解决这个问题?有什么工作吗?
任何帮助都将受到赞赏。
由于
答案 0 :(得分:2)
可能不是最有效的方式,但这适用于熊猫:
if not True in [df.equals(x) for x in df_list]:
df_list.append(df)
Pandas有一个built-in method来检查名为df.equals()
的df等式。基本上你通过你的df_list迭代这个来创建另一个结果列表,然后检查是否有任何结果返回True
(即列表中存在相同的df)。