【问题标题】:Searching through data frame columns in type string (containing numeric range), with user inputs that are in type float搜索字符串类型(包含数字范围)的数据框列,用户输入为浮点类型
【发布时间】:2020-09-17 16:41:53
【问题描述】:

尝试只使用 python 安装的库和 pandas 库,因为我是一个完全的新手。我即将结束为期 6 周的 Python 基础课程。

对于最终项目,我正在制作植物购买指南。基于我向用户提出的一系列问题,我正在解析一个包含 60 个条目的数据框。为了给您一个想法,我的问题的第一部分使用此代码创建了一个过滤数据框

care_df = df.loc[
    lambda x:
    (x['sunlight'].str.lower().str.contains(user_sunlight_pref.lower()))
    & (x['watering_levels'].str.lower().str.contains(user_water_pref.lower()))
    & (x['humidity_preference'].str.lower().str.contains(user_humidity_pref.lower()))
    ]

user_sunlight_pref 存储用户输入的位置(即,他们可能选择“间接光”作为他们的阳光偏好)。

现在,我在第二部分的问题中开始询问有关高度和传播的问题。我将要搜索的数据框列具有以下条目格式:“1.00 到 2.00 英尺”。

我的问题/问题:对于用户问题,我尝试将我呈现给用户的描述性范围作为他们提交作为输入的可能选项:

"Desk range- plants that are appropriate for desks and surfaces, like short bookshelves or corner areas."
" These plants will not block eyesight."

在后端,我想创建一个数字范围,例如“桌面范围”= 0.25 到 1.50 之间的任何值,然后我可以使用它来搜索我的数据框。我无法思考使用什么类型,如何为我的数据框列值创建一个范围(如 1.00 到 2.00)英尺......

*** 或者解决办法是我手动将植物条目分类到适当的描述范围内,但随后我遇到了类似的问题:我可以这样做:

if user_height_pref == 'Desk range'
   user_height_pref = [0.25 to 1.00 feet, 0.25 to 0.75 feet, 1.00 to 1.50 feet...] 

但是如何通过我的数据框高度列进行搜索?不确定如何将此列表的元素搜索/匹配到我的数据框列(使用与 care_df 类似的代码)

【问题讨论】:

    标签: python pandas list dataframe types


    【解决方案1】:

    您可以使用多个条件进行过滤。

    df1 = df[(df['Feet'] >=0.25) & (df['Feet'] <= 1.0)]
    

    您也可以查看这篇文章。

    How to select rows in a DataFrame between two values, in Python Pandas?

    【讨论】:

    • 嗯,我不确定它是否适用于浮动。在运行我的程序时,该行会创建:TypeError: '>=' not supported between 'str' and 'float'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多