将txt格式的url下载到pandas数据帧中

raj*_*ajn 3 python urllib pandas

我在尝试从此特定 URL 下载数据并将其存储在 Pandas 数据框中时遇到问题。有人能帮忙吗?

url ='http://www2.conectiv.com/cpd/tps/archives/nj/2017/12/20171205NJA1.txt'
Run Code Online (Sandbox Code Playgroud)

我需要将每个存储Segment为一行,并在单独的列中使用相应的数字。所以,我需要这种格式:

NJAAP, 12/5/2017, 37.63, 36.34, 35.97,..., 38.52
NJAAS, 12/5/2017, 37.63, 36.34, ...        etc
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

import pandas as pd
from urllib.request import urlopen

df = pd.read_csv(url, skiprows=4) 
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到我想要的。我得到了这个:

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 ...
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢

fur*_*ras 7

read_csv()有很多有用的选项

  • header=None - 第一行不被视为标题。
  • sep='\s+'- 它使用空格来分割列(而不是逗号,)。它是正则表达式。

.

import pandas as pd

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

加载数据后,您可以更改列中的值。

Segments:在第一列中删除

df[0] = df[0].str.replace('Segment:', '')
Run Code Online (Sandbox Code Playgroud)