Pandas DataFrame存在于列表

时间:2017-08-25 10:13:18

标签: python pandas dataframe

我试过搜索,但没有看到任何相关内容,或者它可能已经跳过了我的眼睛。

所以我想要的是非常具体的。我有一个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

我如何解决这个问题?有什么工作吗?

任何帮助都将受到赞赏。

由于

1 个答案:

答案 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)。