2017-11-21 6 views
0

각 열이 공백으로 분리 된 긴 문자열 목록 인 팬더 데이터 프레임이있는 곳에 문제가 있습니다. 다음은 샘플 데이터 프레임 열입니다.python - 팬더 데이터 프레임의 n 번째 요소를 추출하고 subscriptable 문제없이 반복하는 방법

[ "{ 'type':", "text/html", ","language ":", "None", "base": " 'https://www.google.com/alerts/feeds/04514242672909724721/7712142301995898267', " }"] 예를 들어

내가해야 할 일은

이에서 URL을 꺼내 하나 개 엑셀 셀에 위 전체 열이있는 CSV 파일이 인쇄 할 때 이 열의 목록이 20 개 있고 반복 할 때 문제가 발생합니다.

for n, i in enumerate(list(x)): 
     i[n] = i[n][5] 

'float 객체는 subscriptable이 아닙니다'라는 오류가 발생합니다.

나는 이와 비슷한 많은 다른 질문을 보았지만 많은 사람들이 반복을 다루지 않는 것으로 보인다. 나는 df [x] [0] [5]를 확인할 때 'https://www.google.com/alerts/feeds/04514242672909724721/7712142301995898267'을 얻었 기 때문에 각 열의 다섯 번째 요소를 취해야한다는 것을 알고 있습니다.

이 항목의 모범 사례에 대한 도움은 매우 유용합니다.

+1

표시 한 내용은 데이터 프레임 열과 비슷합니다. 이것을 [mcve]로 줄이십시오. –

답변

0

질문하기 전에 먼저 python으로 질문을 시도하십시오. 열에 견적이 없습니다. 문제를 해결하고 열 이름을 지정해 드리겠습니다.

col = ["{'type':", "'text/html',", "'language':", 'None,', "'base':", "'https://www.google.com/alerts/feeds/04514242672909724721/7712142301995898267'",", }"] 

이제 실제로 이것이 DataFrame의 열이라고 말합니다. 의 질문 재현 만들기 위해 DataFrame에이를 넣어 보자 :

df = DataFrame({'x':col}) 

당신은이 컬럼의 숫자를 가지고 말을하고, 5 항목이 당신이 찾고있는 URL입니다. 그런 다음 다음과 같이 명명 된 URL을 열 반복하고 5 요소를 조회하고, 목록을 수집 할 수 있습니다 귀하의 의견 후

URLs = [] 
for column in df: 
    URLs.append(df[column][5]) 

을, 나는 구조가 조금 다른 생각합니다.

따라서 에만 1 열이 있고 그 열 안에 여러 행이 있습니다. 각 행의 다섯 번째 요소는 수집하려는 URL입니다. 의이 당신이 무엇을 모방 한 경우 보자 (내가 만들어 3 URL의) :

row1 = ["{'type':", "'text/html',", "'language':", 'None,', "'base':", "'https://www.google.com/1'",", }"] 
row2 = ["{'type':", "'text/html',", "'language':", 'None,', "'base':", "'https://www.google.com/2'",", }"] 
row3 = ["{'type':", "'text/html',", "'language':", 'None,', "'base':", "'https://www.google.com/3'",", }"] 

df = pd.DataFrame({'col': [row1, row2, row3]}) 

우리 제공 :

In [352]: df 
Out[352]: 
               col 
0 [{'type':, 'text/html',, 'language':, None,, '... 
1 [{'type':, 'text/html',, 'language':, None,, '... 
2 [{'type':, 'text/html',, 'language':, None,, '... 

이런 경우의 해결책이 간단

In [353]: [e[5] for e in df['col']] 
Out[353]: 
["'https://www.google.com/1'", 
"'https://www.google.com/2'", 
"'https://www.google.com/3'"] 

로에게

질문에 답변하거나 답변하지 않는 경우 의견을 보내 주시기 바랍니다.

+0

Fatih - 첫 번째 실수를해서 죄송합니다. 나는 약간의 정보를 텍스트에 써야했고 복사/붙여 넣기했을 때 인용문을 삭제해야했습니다. 나는 가까이 있지만 URL의 마지막 코드입니다.URL 값 : URL : Out [314] : [ ' "{'type ':", "text/html'," " '언어'는 다음과 같이 df [column] [5] " '없음', " '기부' ' "'https://www.google.com/alerts/feeds/04514242672909724721/7712142301995898267 '" "'값 '" " ' "을 통해 체포', '주요', '갱', '인신 매매', '사람', '', 투르 밧, " 'FIA'} "]] 당신은 이유를 알고 있나요 그것은 jus가 아니다. 5 번째 항목을 선택하고 왜 반복하지 않는 이유는 무엇입니까? – eluth

+0

이제 올바른 URL을 얻지 만 첫 번째 행에서만 실행되며 모든 행을 반복하지는 않습니다. "col"은 열에 70 개의 다른 URL이있는 70 개의 데이터 행을 갖도록 초기화되었습니다. URL은 첫 번째 https://www.google.com/alerts/feeds/04514242672909724721/7712142301995898267 값 – eluth

+0

만 반환합니다. 따라서 열 당 몇 개의 URL이 있습니까? 나는 단 하나만 생각하고, 그것은 열 당 5 위 안에 든다. 그게 아닌가? – FatihAkici