2017-12-07 4 views
1

이 특정 URL에서 데이터를 다운로드하고 팬더 데이터 프레임에 저장하는 데 문제가 있습니다. 아무도 이것으로 도울 수 있습니까?url을 txt 형식의 pandas 데이터 프레임으로 다운로드

url ='http://www2.conectiv.com/cpd/tps/archives/nj/2017/12/20171205NJA1.txt' 

I는 별도의 열의 대응하는 행 번호와 각 Segment를 저장할 필요가있다. 그래서,이 형식으로 필요 : 나는 내가 원하는 것을 얻고 있지 않다,

import pandas as pd 
from urllib.request import urlopen 

df = pd.read_csv(url, skiprows=4) 

그러나 :

NJAAP, 12/5/2017, 37.63, 36.34, 35.97,..., 38.52 
NJAAS, 12/5/2017, 37.63, 36.34, ...  etc 

나는 다음과 같은 방법을 시도했다. 대신이 메시지가 표시됩니다.

Segment:NJAAP 12/05/2017 37.63 36.34 35.97 35.76 36.71 39.90 46.36 52.49 56.16 58.41 58.98 59.60 59.58 58.52 57.40 54.34 53.90 53.15 51.44 49.49 46.96 44.12 41.02 38.52 
0 Segment:NJAAS 12/05/2017 ... 
1 Segment:NJADC 12/05/2017 ... 
2 Segment:NJAGN 12/05/2017 ... 
3 Segment:NJAGT 12/05/2017 ... 

도와 줄 사람이 있습니까? 헤더로 취급되지 않고 첫 번째 행 - 감사

+0

[read_csv() (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)를 갖는다 유용한 옵션 - 그것을 써. (예를 들어'header = None') – furas

답변

2

read_csv()는 많은 유용한 옵션

  • header=None 있습니다.
  • sep='\s+' - 공백을 사용하여 열을 분할합니다 (쉼표 , 대신). 그것은 정규 표현식입니다.

.

import pandas as pd 
from urllib.request import urlopen 

url ='http://www2.conectiv.com/cpd/tps/archives/nj/2017/12/20171205NJA1.txt' 
df = pd.read_csv(url, skiprows=4, header=None, sep='\s+') 

데이터를로드 한 후에는 열의 값을 변경할 수 있습니다.

이 첫 번째 열에 Segments: 제거

df[0] = df[0].str.replace('Segment:', '') 
+0

결코 마음에 들지 않습니다. 덕분에 그것을 작동합니다 :) – rajn

+0

read_csv 다른 유용한 옵션이 있습니다 - 즉. 열을 분리하기 위해'sep '. – furas

+0

예제에서'sep = '\ s +''를 추가했습니다. – furas

관련 문제