Python 使用 pandas DataFrame.query() 方法时出现“SyntaxError:扫描字符串文字时 EOL”错误

问题描述 投票:0回答:2

很抱歉,这可能是一个非常愚蠢的问题,但我无法自己解决问题。

我需要在 df.query() 方法中编写一个非常大的条件来过滤我的数据。但由于某种原因我出现了错误。

我的代码

data_normal = data.query('(total_area < 400) & (rooms < 10) & (living_area > 10) & (living_area < 200) \
        & (kitchen_area > 5) & (kitchen_area < 40) & (celling_height >= 2.5) & (last_price < 200000000) \ 
        & (last_price >= 1000000) & (floors_total < 30) & (days_exposition < 800) & (days_exposition > 5) \ 
        & (cityCenters_nearest <= 52000) & (parks_nearest <= 1500) & (parks_nearest > 10)')

返回错误:

文件“/tmp/ipykernel_306/3185002971.py”,第7行 & (厨房面积 > 5) & (厨房面积 < 40) & (celling_height >= 2.5) & (最后价格 < 200000000) \

^ 语法错误:扫描字符串文字时 EOL

但是我之前的代码

data_normal = data.query('(total_area < 400) & (rooms < 10) & (living_area > 10) & (living_area < 200) \
        & (cityCenters_nearest <= 52000) & (parks_nearest <= 1500) & (parks_nearest > 10)')

没有发现任何错误。我不知道为什么。

我试图找到导致此错误的引用,但我仍然看不到它,就好像我是瞎子一样。请帮助我。

我尝试过使用 like 进行多行表达

data_normal = data.query('''(total_area < 400) & (rooms < 10) & (living_area > 10) & (living_area < 200) \
        & (kitchen_area > 5) & (kitchen_area < 40) & (celling_height >= 2.5) & (last_price < 200000000) \ 
        & (last_price >= 1000000) & (floors_total < 30) & (days_exposition < 800) & (days_exposition > 5) \ 
        & (cityCenters_nearest <= 52000) & (parks_nearest <= 1500) & (parks_nearest > 10)''')
python pandas string data-analysis string-literals
2个回答
0
投票

这可能是多行查询字符串和斜杠的问题。 也许尝试先将其放在一行中,然后逐渐拆分以使其更具可读性。

这对我有用:

data_normal = data.query('(total_area < 400) & (rooms < 10) & (living_area > 10) & (living_area < 200) \
    & (kitchen_area > 5) & (kitchen_area < 40) & (celling_height >= 2.5) & (last_price < 200000000) \
    & (last_price >= 1000000) & (floors_total < 30) & (days_exposition < 800) & (days_exposition > 5) \
    & (cityCenters_nearest <= 52000) & (parks_nearest <= 1500) & (parks_nearest > 10)')

0
投票

您可能希望将查询写得更详细一些,并少用反斜杠延续:

data_normal = data.query("""
(
    (total_area < 400)
    & (rooms < 10)
    & (living_area > 10)
    & (living_area < 200)
    & (kitchen_area > 5)
    & (kitchen_area < 40)
    & (celling_height >= 2.5)
    & (last_price < 200000000)
    & (last_price >= 1000000)
    & (floors_total < 30)
    & (days_exposition < 800)
    & (days_exposition > 5)
    & (cityCenters_nearest <= 52000)
    & (parks_nearest <= 1500)
    & (parks_nearest > 10)
)
""")
© www.soinside.com 2019 - 2024. All rights reserved.