Python 如何搜索值是否在数据框内

Python 如何搜索值是否在数据框内,python,pandas,csv,Python,Pandas,Csv,我有两个名为master_registry.CSV和master_reference.CSV的CSV文件。通过使用这些CSV,我创建了一些称为“df”和“df2”的新数据帧。通过组合这些“df”和“df2”数据帧,我创建了一个名为“new_df”的新数据帧。问题是我想找到一个值在这个“新的_df”数据框中。但是当我试图得到结果时,它会给我一个错误 这是代码 # reading csv from the directory df = pd.read_csv('application

我有两个名为master_registry.CSV和master_reference.CSV的CSV文件。通过使用这些CSV,我创建了一些称为“df”和“df2”的新数据帧。通过组合这些“df”和“df2”数据帧,我创建了一个名为“new_df”的新数据帧。问题是我想找到一个值在这个“新的_df”数据框中。但是当我试图得到结果时,它会给我一个错误

这是代码

    # reading csv from the directory
    df = pd.read_csv('application/master_registry.csv')
    df2 = pd.read_csv('application/master_reference.csv')

    # filtering some selected columns form the csv
    df = df.filter(items=['Master_ID', 'Provider First Name', 'Provider Middle Name', 'Provider Last Name (Legal Name)', 'Provider Credential Text', 'Provider Gender Code','Provider License Number State Code_1',
                    'Provider Business Practice Location Address City Name'])

    # creating new data frame with "full name" column
    df['Full_Name'] = df[['Provider First Name', 'Provider Last Name (Legal Name)']].apply(lambda x: ' '.join(x), axis=1)

    new_df = df.set_index('Master_ID').join(df2.set_index('Master_ID'))

    # selecting rows according to the external values
    main = new_df[(new_df['Master_ID']==master_id)]
    print(main.values.tolist())
当我尝试上面的代码时,它会给我这个错误。

C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\pandas\core\ops.py:1164: 未来警告:元素级比较失败;返回标量 相反,但将来将执行元素级比较 结果=方法(y) [2018-06-15 14:36:07148]应用程序中的错误:在/search/manual/results/by_npi[POST]上出现异常 回溯(最近一次呼叫最后一次): 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\app.py”, 第2292行,在wsgi_应用程序中 response=self.full\u dispatch\u request() 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\app.py”, 第1815行,完全发送请求 rv=自身处理用户异常(e) 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\app.py”, 第1718行,在handle\u user\u异常中 重放(exc_类型、exc_值、tb) 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\u compat.py”, 第35行,重新播放 增值 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\app.py”, 第1813行,完全发送请求 rv=自我分派请求() 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\flask\app.py”, 第1799行,在调度请求中 返回self.view\u函数rule.endpoint 文件“C:\Users\ChampsoftWK26\Desktop\Jericho\u v0.0.7\application\routes.py”, 第41行,由npi搜索手动搜索结果 info=hub。按npi(npi)处理搜索 文件“C:\Users\ChampsoftWK26\Desktop\Jericho\u v0.0.7\application\hub.py”, 第152行,npi正在进行的搜索 打印(新的\u df['Client\u Reference\u ID']==npi) 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\pandas\core\ops.py”, 第1253行,在包装器中 res=na_op(值,其他) 文件“C:\Users\ChampsoftWK26\Envs\jerich\u core\lib\site packages\pandas\core\ops.py”, 第1166行,纳乌op raise TypeError(“类型比较无效”) TypeError:类型比较无效 127.0.0.1---[15/Jun/2018 14:36:07]“发布/搜索/手册/结果/作者:npi HTTP/1.1”500-

新的_df是这样的

             Provider First Name         ...         Client_Reference_ID
Master_ID                             ...                            
1                     WILLIAM         ...                  1588667638
2                     RICHARD         ...                  1114920261
3                   FRANCISCO         ...                  1861495814
4                        ERIC         ...                  1306849336
5                     RICHARD         ...                  1326041476
6                      GHAITH         ...                  1770586828
7                      TREVOR         ...                  1124021274

您需要按索引获取行,请尝试以下操作:

 main = new_df.loc[[master_id]]
比如说

new_df.loc[[2]]
返回

             Provider First Name     Client_Reference_ID
Master_ID                                                      
2                 RICHARD                 1114920261

似乎
Master\u ID
是您的索引。在这种情况下,这应该起作用:

'your id' in new_df.index
如果索引存在,则给出
true
false

或者将其转换为列,然后继续使用代码:

new_df['Master_ID'] = df.index
main = new_df[(new_df['Master_ID']==master_id)]

你能提供一个新的df和预期输出的样本吗?哪一行给了你错误?我想这是给我错误的那一行
main=new_-df[(new_-df['Master\u-ID']==Master\u-ID)]
,所以我怎样才能将一些值与indexI进行比较呢。同样,我猜它是索引。你确定master_id是一列而不是索引吗?是的,然后:new_df=df.set_index('master_id')。join(df2.set_index('master_id'))。无论如何,在评论中没有重点讨论。如果您有更好的解决方案,请发布:)我认为@Isma的解决方案相当不错anyway@roganjosh没有挑衅的意愿,只是学习和提高技能和答案:)“扔给我”是一种口语,我来自这里,意思是“你提出了一个很好的观点,把我试图表达的观点弄糊涂了”。没有什么挑衅性:)我很快会澄清我的评论。