代码:
import pandas as pd
input = pd.read_csv("resale-flat-prices.csv", header=None)
ans = []
for row in input:
if(input.iloc[row,2].match("3 ROOM") and input.iloc[row,7].match("ADJOINED FLAT")):
ans.append(input[row])
print(ans)
要从具有以下匹配项的csv文件中查找数据行并将其附加到新列表中,我该如何检查和匹配字符串项?
更新:
我使用“ in”运算符进行了如下编辑:
if(input.iloc [row,2]中为“ 3 ROOM”,input.iloc [row,7]中为“ ADJOINED FLAT”):
产生的结果为空列表,问题出在csv文件的读取上吗?
csv文件中的前三行数据:
1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 04至06 | 31 |改进| 1977 | 6000
1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 07至09 | 31 |改进| 1977 | 6000
1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 10至12 | 31 |改进| 1977 | 8000
共有10列
答案 0 :(得分:1)
要检查字符串是否相等,只需使用==
运算符:
>>> my_string = "3 ROOM"
>>> my_string == "3 ROOM"
True
>>> my_string == "3 ROOMS"
False
要检查字符串是否包含子字符串,请使用in
运算符:
>>> my_string = "13 ROOMS"
>>> "3 ROOM" in my_string
True
>>> "30 ROOM" in my_string
False
要进行更高级的字符串比较,您可能需要使用regular expressions:
>>> import re
>>> my_string = "3 ROOM"
>>> re.match(r"^\d ROOM$", my_string)
<_sre.SRE_Match object at 0x7f4ac226bb90>
>>> re.match(r"^\d ROOMS$", my_string)
None
答案 1 :(得分:0)
如果不需要正则表达式,则可以使用运算符in
for row in input:
if("3 ROOM" in input.iloc[row,2] and "ADJOINED FLAT" in input.iloc[row,7]):
ans.append(input[row])