在 Python 中,如何根据包含特定值的值过滤列?
一个例子是一个数据集,其中有一列名为“城市”,值可以是“悉尼”、“大悉尼”、“北悉尼”等。如果使用输入“悉尼”,我如何确保所有变化是否包含在过滤中?
#user inputs column
input1 = input()
country_city = input1.title()
#user inputs value
input2 = input()
country_city_value = input2.title()
#filtering step (current)
filtered = dataset[dataset[country_city] == country_city_value]
print(filtered)
str.contains
是个好方法,但如果您的输入是“North Sydney”,您将不会收到 Sydney
结果,只有 north悉尼
示例:
df= pd.DataFrame({
'A':['Sydney','North Sydney','Alaska']
})
print(df)
A
0 Sydney
1 North Sydney
2 Alaska
input='North Sydney'
filtered = df[df.A.str.contains(input)]
print(filtered)
A
1 North Sydney
因此,要改进这种方式,请使用 split() with str.contains()
input=input.split()
print(input)
['North', 'Sydney']
filtered = df[df.A.str.contains('%s'%[x for x in input])]
print(filtered)
A
0 Sydney
1 North Sydney
所以通过这种方式,你确定你输入的所有部分都会被考虑在内