Filtern nach 'enthält Wert' in einem Datensatz in Python [Duplikat]
Wie filtern Sie in Python eine Spalte nach Werten, die einen bestimmten Wert enthalten?
Ein Beispiel ist ein Datensatz mit einer Spalte namens "Stadt". Die Werte können "Sydney", "Greater Sydney", "North Sydney" usw. sein. Wenn Sie "Sydney" eingeben, wie kann ich sicherstellen, dass alle Variationen in enthalten sind die Filterung?
#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)
Antworten
str.containsist ein guter Weg, aber wenn Ihre Eingabe "North Sydney" ist, erhalten Sie Sydneyals Ergebnis nur ein north sydneyBeispiel:
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
Also auf diese Weise verbessern verwenden 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
Auf diese Weise können Sie sicher sein, dass alle Teile Ihrer Eingabe berücksichtigt werden
Wenn Sie Inhalte filtern möchten, die das Eingabewort enthalten, wenden Sie Folgendes an 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)