如何在excel文档中搜索特定单词,以及如何使用搜索结果建立新列

时间:2019-07-05 13:54:34

标签: python excel pandas if-statement

因此,我是python的新手,我正尝试使用python在excel工作表中搜索每一行中的“ ICD”,并使用结果创建一个新列,因此,如果一行包含单词“ ICD”,则在如果没有,则会在新列中显示“是”,然后显示“否”。

到目前为止,我已经尝试了许多不同的方法,但是由于即时消息是新手,所以我陷入了困境。这是我到目前为止所拥有的。我甚至花了一段时间才找到一种导入Excel文档本身的方法,现在我必须找到一种方法来添加新列并搜索每一行并放入结果。我知道我需要一个循环,我知道我需要一个if / else语句,但是我不知道将它们放置在哪里或将它们放置在哪里。即时通讯使用python 3.7

import pandas as pd
import xlrd
df = pd.read_excel (r'C:\New folder\CrohnsD.xlsx')
print (df)
import xlsxwriter
ICD=[
    str = df
    str.find("ICD",[ 0,[ 1057]])\
    if row contains "ICD"


]`

2 个答案:

答案 0 :(得分:0)

Pandas具有本机excel阅读支持,因此除非您有复杂的输出格式要求,否则您不需要xlrd或xlsxwriter。如果您只是在阅读,添加一列并进行写作,则可以使用熊猫来实现所有这些功能。

您可以使用lambda函数一次检查所有行。这似乎有些高级,但是.sidebar .nav-link-top>a { display: block; padding: 4px 0px 4px 15px; background-color: #ffffff; color: #444444; text-decoration: none; font-size: 13px; font-weight: bold; } .sidebar .nav-link-top>a:hover { background-color: #58cb57; color: #ffffff; } .sidebar .nav-link-top>a.active { color: #ffffff; background-color: #58cb57; } .nav-link-bottom>a { display: block; padding: 4px 0px 4px 15px; background-color: #ffffff; color: #444444; text-decoration: none; font-size: 13px; font-weight: bold; } .nav-link-bottom>a:hover { background-color: #58cb57; color: #ffffff; } .nav-link-bottom>a.active { color: #ffffff; background-color: #58cb57; } .sub-menu>a { padding-left: 25px; font-size: 11px; font-weight: normal; } 上的.apply(lambda)将执行您分配给数据帧每一行的任何逻辑。然后,我们可以使用axis=1来检查每个.str .contains() and .any()的礼物

'a'

输出

data = [['a','b','c'],['a','d','e'],['x','y','z']]
df = pd.DataFrame(data)

# Create a new column that contains True or False depending on if any of the values in that row contain the string 'a'
df['has_letter_a'] = df.apply(lambda row: True if row.str.contains('a').any() else False, axis=1)

答案 1 :(得分:0)

您可以依赖基本的pandas字符串函数-不需要任何花哨的东西。寻找一列文字是否包含特定的文字字符串?使用Series.str.contains

df = pd.DataFrame({'x':['abc','defgICD','hijicd','klm']})
df['icd'] = df['x'].str.contains('icd', case=False)

返回:

         x    icd
0      abc  False
1  defgICD   True
2   hijicd   True
3      klm  False

有关可用选项的一些文档,请参见str.contains的帮助页面。特别是,您可以指定是否根据大小写进行匹配(在这种情况下,您要匹配的模式必须是精确的)或是否匹配icdICDiCd等。< / p>

观点:随着您在编程甚至Excel方面获得更多的经验,我建议您坚持使用布尔型True / False值,而不是编码为“ Yes” /“ No”,因为这会更多简单,易于记忆等。如果您需要向经理/客户/其他人展示某些内容,则可以将True / False替换为其他内容作为最后一步。