PySpark - ciągi znaków do tworzenia nowej kolumny
Mam ramkę danych taką jak:
ID Notes
2345 Checked by John
2398 Verified by Stacy
3983 Double Checked on 2/23/17 by Marsha
Powiedzmy, że trzeba sprawdzić tylko 3 pracowników: John, Stacy lub Marsha. Chciałbym stworzyć nową kolumnę w ten sposób:
ID Notes Employee
2345 Checked by John John
2398 Verified by Stacy Stacy
3983 Double Checked on 2/23/17 by Marsha Marsha
Czy regex czy grep są tutaj lepsze? Którą funkcję powinienem wypróbować? Podziękować!
Edytuj: Próbowałem kilka rozwiązań, ale wydaje się, nic nie działa. Powinienem się poddać i zamiast tego tworzyć kolumny dla każdego pracownika z wartością binarną? TO ZNACZY:
ID Notes John Stacy Marsha
2345 Checked by John 1 0 0
2398 Verified by Stacy 0 1 0
3983 Double Checked on 2/23/17 by Marsha 0 0 1
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
4 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
W skrócie:
> >
To wyrażenie wyodrębnia
imię i nazwisko pracownika
z
dowolna pozycja
gdzie to jest
po
Spacje w kolumnie tekstowej (
)
Szczegółowo:
>
Utwórz przykładową ramkę danych
Dokonaj niezbędnego importu
W wyodrębnij nazwę z kolumny za pomocą .
Tutaj
regex
( ) oznacza
i
group_number
równa się 4, ponieważ grupa znajduje się na czwartej pozycji w wyrażeniu
Notatnik Databricks
https://databricks-prod-cloudf ... .html
Uwaga:
> wydaje się być znacznie czystszą wersją i
sprawdź Regex w użyciu tutaj
https://regex101.com/r/2lk6eV/3
Anonimowy użytkownik
Potwierdzenie od:
Krótki
>
W najprostszej formie i zgodnie z podanym przykładem, ta odpowiedź powinna wystarczyć, chociaż OP powinien wysłać więcej próbek, jeśli istnieją inne próbki, w których nazwa musi poprzedzać jakiekolwiek inne słowo niż .
Kod
>
Zobacz sekcję używanego kodu tutaj
https://regex101.com/r/Qxfx0B/3
Regex
Zastąpienie
wyniki
>
Wejście
>
Wyjście
>
Uwaga:
powyższe dane wyjściowe oddzielają każdą kolumnę znakiem tabulacji , więc gołym okiem może się to wydawać niewłaściwe, ale po prostu używając parsera wyrażeń regularnych online i wstawiając do Sekcja dopasowania wyrażeń regularnych, powinieneś pokazać, gdzie znajduje się każda kolumna z początkiem/końcem.
Wyjaśnienie
>
Regex
>
[\ t] *
odpowiada dowolnej liczbie spacji lub tabulatorów ([\ t]
można zastąpić w niektórych wyrażeniach regularnych warianty takie jak PCRE)[\ t] +
dopasowuje co najmniej jedną spację lub tabulator[\ t] *
odpowiada dowolnej liczbie spacji lub tabulatorów[/*]
[*] potwierdź pozycję na końcu wiersza
[/*]
[/list]
Zastąpienie
>
Anonimowy użytkownik
Potwierdzenie od:
tylko 3 pracowników
sprawdzić: John, Stacy lub Marsha ”).
Jeśli jest to naprawdę znana lista, najłatwiej jest sprawdzić tę listę granic słów:
Anonimowy użytkownik
Potwierdzenie od:
W przypadku, gdy chcesz użyć REGEX, aby wyodrębnić poprawną wartość, potrzebujesz czegoś podobnego