Pandas의 데이터 프레임을 연결하여 정규식 패턴을 추출하는 방법이 있습니까?
P粉770375450
2023-08-16 20:25:57
<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>
가깝습니다. 그러면 일치 ID가 포함된 새 열이 추가됩니다.
으아악출력:
으아악