pandas python을 사용할 때 특정 단어를 제외한 모든 문자열을 교체합니다. 문자열 교체 [중복]

Dec 03 2020

pandas 데이터 프레임에 새 열을 형성하고 있으며 운영 체제의 짧은 이름을 입력하고 싶습니다. 정규식을 사용하고 있으며 선택에서 제외하기 위해 정확히 일치하는 단어가 필요하지만 단어를 선택하지 않도록 정규식을 변경하면 정확한 일치가 중지됩니다. 가능한 한 많은 정규식 정확히 일치 단어 게시물을 읽었으며 어떤 솔루션도 작동하지 않습니다.

예를 들어 다음과 같은 데이터가 있습니다.

Android 10kdsh
Chrome OS
Linux ddk2
OS X 10.
Windows 7
iOS c

다음과 같이 보이기를 원합니다.

Android 
Chrome
Linux
OS X
Windows
iOS

다음과 같이 코드를 시도했습니다.

def short_OS(webchat):

    webchat["OS"] = webchat["Operating System"].str.replace(('[^(Android|^OS X|^Chrome|^Linux|^Windows|^iOS)]'),"", regex = True)

    return webchat

그러나 이로 인해 일부 캐릭터가 떠나는 것으로 남습니다.

Androiddsh
ChromeOS
Linuxdd
OS X
Windows
iOS

분명히 위는 단지 예일 뿐이지 만 단어에 그대로 남아있는 일부 문자에 대한 원칙은 동일합니다.

\ b로 단어를 구성해도 결과는 바뀌지 않았습니다. 그리고 문자열 끝에 $를 사용하면 'Android'의 예에서 여전히 '10kdsh'가 같은 줄에 남습니다.

누구든지 제발 도와 드릴까요?

감사합니다

답변

1 Thefourthbird Dec 03 2020 at 22:24

대체하는 대신 대안 중 하나를 일치시켜 새 열에 추출 할 수 있습니다.

webchat = pd.DataFrame(data, columns=["Operating System"])
webchat["OS"] = webchat["Operating System"].str.extract((r"^(Android|Chrome|Linux|OS X|Windows|iOS)\b"))
print(webchat)

산출

  Operating System       OS
0   Android 10kdsh  Android
1        Chrome OS   Chrome
2       Linux ddk2    Linux
3         OS X 10.     OS X
4        Windows 7  Windows
5            iOS c      iOS
MizzH Dec 04 2020 at 05:15

@The 네 번째 새의 접근 방식을 사용하여 다음 코드를 사용하여이 문제를 해결했습니다.

def short_OS(webchat):
 
    webchat["OS"] = webchat["Operating System"].str.extract(r"(\bAndroid\b|\bOS X\b|\bChrome\b|\bLinux\b|\bWindows\b|\biOS\b)")

    return webchat

단어를 둘러싼 / b는 정확한 단어를 캡처하는 데 필요했습니다.