Filtern nach 'enthält Wert' in einem Datensatz in Python [Duplikat]

Aug 28 2020

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

1 sygneto Aug 28 2020 at 06:44

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

1 AvivYaniv Aug 28 2020 at 06:34

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)