Python의 데이터 세트에서 '값 포함'필터링 [중복]

Aug 28 2020

Python에서 특정 값을 포함하는 값으로 열을 어떻게 필터링합니까?

예는 'City'라는 열이있는 데이터 세트이며 값은 'Sydney', 'Greater Sydney', 'North Sydney'등이 될 수 있습니다. 사용하는 경우 'Sydney'를 입력하면 모든 변형이 필터링?

#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)

답변

1 sygneto Aug 28 2020 at 06:44

str.contains좋은 방법이지만 입력 한 내용이 'North Sydney'이면 Sydney결과적으로 수신되지 않습니다 north sydney. 예를 들면 다음과 같습니다.

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

따라서 이러한 방식으로 입력의 모든 부분이 고려됩니다.

1 AvivYaniv Aug 28 2020 at 06:34

입력 단어가 포함 된 내용을 필터링하려면 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)