【问题标题】:How do I import an excel file and search for specific record using python and pandas?如何导入 excel 文件并使用 python 和 pandas 搜索特定记录?
【发布时间】:2020-08-07 16:15:37
【问题描述】:

我正在尝试导入 excel 文件并搜索特定记录

这是我到目前为止想出的,它一直在抛出错误。

excel电子表格有两列KeywordDescription,每个关键字最多10个字符左右,描述最多150个字符左右。

我可以使用print(df1) 在 excel 文件中打印整张工作表而不会出现任何错误,但是一旦我尝试搜索特定值,它就会出错。

错误

ValueError: ('Lengths must match to compare', (33,), (1,))

代码

import pandas as pd

file = 'Methods.xlsx'
df = pd.ExcelFile(file)
df1 = df.parse('Keywords')
lookup = df1['Description'].where(df1['Keyword']==["as"])
print (lookup)

【问题讨论】:

    标签: python excel pandas dataframe


    【解决方案1】:

    过滤器语法是这样的

    df_filtered = df[df[COLUMN]==KEYWORD]
    

    所以在你的情况下

    lookup = df1[df1['Keyword'] == "as"]['Description']
    

    或整个代码

    import pandas as pd
    file = 'Methods.xlsx'
    df = pd.ExcelFile(file)
    df1 = df.parse('Keywords')
    lookup = df1[df1['Keyword'] == "as"]['Description']
    print (lookup)
    

    分解:

    is_keyword = df1['Keyword'] == "as"
    

    这将返回一个包含TrueFalse 的系列,具体取决于关键字是否存在。
    然后我们可以过滤数据框以获取具有True 的那些行。

    df_filtered = df1[is_keyword]
    

    这将导致所有列,因此我们只获取 Description

    lookup = df_filtered['description']
    

    或一行

    lookup = df1[df1['Keyword'] == "as"]['Description']
    

    【讨论】:

    • 太棒了!效果很好,感谢您的修复和故障(非常有用)!
    【解决方案2】:

    添加到上面@Jimmar 给出的详细答案:

    为了语法方便,你可以这样写代码:

    lookup = df1[df1.keyword == "as"].Description
    

    Pandas 提供列名查找,就像它是 DataFrame 类的成员一样(使用点表示法)。请注意,以这种方式使用的列名中不应包含任何空格

    【讨论】:

    • 效果也很好,感谢替代语法!
    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多