Memfilter 'berisi nilai' dalam kumpulan data dengan Python [duplikat]
Dengan Python, bagaimana Anda memfilter kolom berdasarkan nilai yang mengandung nilai tertentu?
Contohnya adalah kumpulan data dengan kolom yang disebut 'Kota' dan nilainya bisa jadi 'Sydney', 'Greater Sydney', 'North Sydney' dll. Jika menggunakan masukan 'Sydney' bagaimana saya bisa memastikan bahwa semua variasi disertakan di penyaringan?
#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)
Jawaban
str.containsadalah cara yang baik untuk melakukannya, tetapi jika masukan Anda adalah 'Sydney Utara', Anda tidak akan menerima Sydneyhasilnya, hanya north sydneycontoh:
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
Jadi untuk meningkatkan penggunaan cara itu 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
Jadi dengan cara ini, Anda yakin bahwa semua bagian masukan Anda akan diperhitungkan
Jika Anda ingin memfilter konten yang berisi kata input, terapkan str.contains:
data = {'City': ['Sydney', 'Greater Sydney', 'North Sydney'],}
dataset = pd.DataFrame(data, columns = ['City'])
#user inputs column
input1 = input()
country_city = input1.title() # 'City'
#user inputs value
input2 = input()
country_city_value = input2.title() # 'Sydney'
#filtering step (current)
filtered = dataset[dataset[country_city].str.contains(country_city_value)]
# City
# 0 Sydney
# 1 Greater Sydney
# 2 North Sydney
print(filtered)