Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧存在于列表中_Python_Pandas_Dataframe - Fatal编程技术网

Python 数据帧存在于列表中

Python 数据帧存在于列表中,python,pandas,dataframe,Python,Pandas,Dataframe,我试着搜索,但没有看到任何相关的东西,或者它可能跳过了我的眼睛 所以我想要的是非常具体的。我有一个数据框列表,我想检查在当前步骤/工作流中创建的数据框是否已经存在于列表中,如果是,则传递或附加到列表中。现在,我尝试使用以下方法: if df not in best_dfs: # process something here best_dfs.append(df) else: pass 这是检查列表是否包含固定类型的对象的方法。但当我做同样的事情时,我收到了以下错误: Tr

我试着搜索,但没有看到任何相关的东西,或者它可能跳过了我的眼睛

所以我想要的是非常具体的。我有一个数据框列表,我想检查在当前步骤/工作流中创建的数据框是否已经存在于列表中,如果是,则传递或附加到列表中。现在,我尝试使用以下方法:

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
回溯(最近一次呼叫最后一次):
文件“C:/Projects/Barclays/Email Analytics/POC-停止支票分类/03_CodeBase/CodeBase/utils/FindBestDf.py”,第239行,在
打印(对象查找(dfs))
文件“C:/Projects/Barclays/Email Analytics/POC-停止支票分类/03_CodeBase/CodeBase/utils/FindBestDf.py”,第19行,在find中_
r=自驱动程序(df列表)
文件“C:/Projects/Barclays/Email Analytics/POC-停止支票分类/03_CodeBase/CodeBase/utils/FindBestDf.py”,第201行,in_u驱动程序
如果v[0]不在最佳\u dfs中:
文件“C:\Users\IBM\u ADMIN\Anaconda3\lib\site packages\pandas\core\ops.py”,第1296行,在f中
返回self.\u比较\u帧(其他、函数、str\u rep)
文件“C:\Users\IBM\u ADMIN\Anaconda3\lib\site packages\pandas\core\frame.py”,第3670行,在\u compare\u frame中
raise VALUERROR('只能比较相同标签的'
ValueError:只能比较标记相同的数据帧对象
我该怎么解决这个问题?有什么解决办法吗

任何帮助都将不胜感激


谢谢

也许不是最有效的方法,但这对熊猫来说很有效:

if not True in [df.equals(x) for x in df_list]:
    df_list.append(df)

Pandas有一个名为
df.equals()
的函数来检查df是否相等。基本上,您可以在df\u列表中重复此函数以创建另一个结果列表,然后检查是否有任何结果返回
True
(即列表中存在相同的df)。

可能不是最有效的方法,但这对Pandas有效:

if not True in [df.equals(x) for x in df_list]:
    df_list.append(df)

Pandas有一个名为
df.equals().

为什么不用str作为键,df作为值来创建一个dict并检查str值?这里的问题是,您试图比较df是否存在,但等式运算符只能比较相同标记的dfs。您能告诉我们更多关于这些数据帧的信息吗?它们的大小是否相同?列数是否相同?它们如何统一ue?为什么不使用str作为键,df作为值来创建dict并检查str值?这里的问题是,您试图比较df是否存在,但等式运算符只能比较相同标记的DFS。您可以告诉我们更多关于这些数据帧的信息吗?它们是否具有相同的大小?相同的列数?它们如何唯一?
列表中不正确
相当于
任何(列表)
谢谢@Yeile。这正是我想要的。:-
列表中不正确
相当于
任何(列表)
谢谢@Yeile。这正是我想要的。:-)