为了账号安全,请及时绑定邮箱和手机立即绑定

检查单元格内容是否存在于屏幕输入的字符串中 - Python Pandas

检查单元格内容是否存在于屏幕输入的字符串中 - Python Pandas

三国纷争 2022-08-16 18:23:27
我有一个包含2列的excel文件,如下所示。我想检查列名“CODE1”中的单元格内容是否存在于从屏幕输入的字符串中。然后在屏幕上返回结果是列名称“结果”import pandas as pdimport getpassimport randompath_to_csv_file = 'C:\\names.xlsx'code_names_dataframe = pd.read_excel(path_to_csv_file) code_names_dictionary = code_names_dataframe.to_dict(orient='records')user_response = input()user_response=user_response.lower()while True:      name = None    username = user_response    for code_name in code_names_dictionary:        if username.contains(code_name['CODE1']).any():            name = code_name['RESULT']           if name is not None:            break           else:        print('Not Correct')        breakprint(name)      Excel 格式如下:CODE1       RESULTexcel       OK. Excelapple       OK. Apple我想当用户在屏幕上输入字符串为“我想收到一个苹果”...然后结果将在屏幕上返回是“OK. 苹果”当我运行代码时,它显示错误如下:Traceback (most recent call last):  File "C:\Users\Administrator\Desktop\Chatbot - ReadData\ExcelCSV.py", line 58, in <module>    mainmenu()  File "C:\Users\Administrator\Desktop\Chatbot - ReadData\ExcelCSV.py", line 49, in mainmenu    if username.contains(code_name['CODE1']).any():AttributeError: 'str' object has no attribute 'contains'
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您可以将文本拆分为单词列表,然后可以使用isin()


import pandas as pd


df = pd.DataFrame({

        'CODE': ['excel', 'apple'],

        'RESULT':['OK. Excel', 'OK. Apple']

})


text = 'I want to receive an apple'.lower()

words = text.split(' ')


mask = df['CODE'].isin(words)


print( mask )


print( df[ mask ] )


if mask.any():

    name = df[mask]['RESULT'].iloc[0]

else:

    name = None

print('Name:', name)  

结果


# mask

0    False

1     True

Name: CODE, dtype: bool


# df[mask]    

    CODE     RESULT

1  apple  OK. Apple


Name: OK. Apple

编辑:其他方法


mask = df['CODE'].apply(lambda x: x.lower() in text.lower())

法典


import pandas as pd


df = pd.DataFrame({

        'CODE': ['excel file', 'apple'],

        'RESULT':['OK. Excel', 'OK. Apple']

})


text = 'I have excel file on the PC'


mask = df['CODE'].apply(lambda x: x.lower() in text.lower())


print( mask )


print( df[ mask ] )


if mask.any():

    name = df[mask]['RESULT'].iloc[0]

else:

    name = None

print('Name:', name) 

结果


# mask

0     True

1    False

Name: CODE, dtype: bool


# df[mask]

         CODE     RESULT

0  excel file  OK. Excel


Name: OK. Excel


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信