很抱歉,这可能是一个非常愚蠢的问题,但我无法自己解决问题。
我需要在 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)''')
这可能是多行查询字符串和斜杠的问题。 也许尝试先将其放在一行中,然后逐渐拆分以使其更具可读性。
这对我有用:
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)')
您可能希望将查询写得更详细一些,并少用反斜杠延续:
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)
)
""")