>  Q&A  >  본문

Pandas의 데이터 프레임을 연결하여 정규식 패턴을 추출하는 방법이 있습니까?

<p>생성된 Pandas 테이블의 링크에서 정규식 패턴을 추출하려고 합니다. </p> <p>Pandas 데이터 프레임을 생성하는 코드는 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">panda를 pd로 가져오기 다시 가져오기 url = 'https://www.espncricinfo.com/records/year/team-match-results/2005-2005/twenty20-internationals-3' base_url = 'https://www.espncricinfo.com' 테이블 = pd.read_html(url, extract_links = "body")[0] table = table.apply(lambda col: [link[0] if link[1] is None else f'{base_url}{link[1]}' for link in col]) 테이블</pre> <p>테이블의 링크에서 일치 ID를 추출하고 싶습니다. 각 게임의 경우 게임 ID는 "t20i-" 패턴 뒤의 연속 숫자 집합이며 슬래시 앞에서 끝납니다. 예를 들어: 이 일치 항목의 일치 ID는 211048입니다. 단일 게임에 대한 코드는 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">scorecard_url = 'https://www.espncricinfo.com/series/australia-tour-of-new-zealand-2004-05-61407/new- 뉴질랜드-vs-호주-전용-t20i-211048/전체 점수 카드' match_id = re.findall('t20i-(d*)/', Scorecard_url) match_id[0]</pre> <p>파생 열 match-id를 사용하여 전체 테이블에 대해 작업을 수행하고 싶습니다. 이 열은 스코어카드 열을 사용합니다. 그러나 나는 이것을 달성하지 못했습니다. </p> <p>저는 처음에 다음과 같은 간단한 명령을 시도해 보았습니다. </p> <pre class="brush:php;toolbar:false;">table['match_id']= re.findall('t20i-(d*)/', table['Scorecard']) 테이블</pre> <p>'TypeError: 예상 문자열 또는 바이트열과 같은 개체' 오류가 발생하여 링크가 문자열로 저장되지 않고 문제의 원인일 수 있다고 생각하게 됩니다. </p> <p>그런 다음 다음을 시도했습니다. </p> <pre class="brush:php;toolbar:false;">table['match_id']= re.findall('t20i-(d*)/', str(table['Scorecard'])) 테이블</pre> <p>이렇게 하면 'ValueError: 값의 길이(0)가 인덱스의 길이(3)와 일치하지 않습니다.' 오류가 발생하는데, 원인이 무엇인지 잘 모르겠습니다. </p> <p>또한 람다 함수를 사용해 보았지만 성공하지 못했습니다. 이 방법이 효과가 있다면 사용해도 괜찮을 것 같습니다. </p>
P粉770375450P粉770375450430일 전574

모든 응답(1)나는 대답할 것이다

  • P粉310931198

    P粉3109311982023-08-17 00:08:30

    가깝습니다. 그러면 일치 ID가 포함된 새 열이 추가됩니다.

    으아악

    출력:

    으아악

    회신하다
    0
  • 취소회신하다