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는 정확한 단어를 캡처하는 데 필요했습니다.