我正在尝试从此网站获取日期,网址中包含.txt。我是一个蟒蛇新手,刚刚开始上周。这是链接:
http://regsho.finra.org/FNSQshvol20171121.txt
我尝试使用pandas,requests.get和BeautifulSoup来获取我认为我做得对的数据。接下来的问题是......如何索引和使用我刚刚获得的数据。这是我的代码
page = requests.get('http://regsho.finra.org/FNSQshvol20171121.txt')
soup = BeautifulSoup(page.text, 'html.parser')
print(soup.prettify())
OR
import pandas as pd
list = pd.read_table('http://regsho.finra.org/FNSQshvol20171121.txt')
list.head()
list.columns
如何索引从网站获得的数据或只选择某些列?
list['Date', 'Symbol']
list[5:12]
等等。
请帮忙!我觉得应该有一个更简单的方法,我不必走艰难的路线。
非常感谢任何帮助!
答案 0 :(得分:0)
我不相信你正确地读了你的数据帧。如果您使用的是read_table
,请使用sep='|'
将数据正确分段到不同的列中。
df = pd.read_table('http://regsho.finra.org/FNSQshvol20171121.txt', sep='|')
df.head()
Date Symbol ShortVolume ShortExemptVolume TotalVolume Market
0 20171121 A 625382.0 3586.0 1467570.0 Q
1 20171121 AA 873300.0 3417.0 2158580.0 Q
2 20171121 AAAP 4185.0 135.0 412030.0 Q
3 20171121 AABA 452857.0 300.0 4045918.0 Q
4 20171121 AAC 21235.0 1501.0 45747.0 Q
现在,df[['X', 'Y', ...]]
为您提供了所选列的数据框切片:
df[['Date', 'Symbol']].head()
Date Symbol
0 20171121 A
1 20171121 AA
2 20171121 AAAP
3 20171121 AABA
4 20171121 AAC
要选择行列子切片,只需使用loc
:
df.loc[5:12, ['Date', 'Symbol']]
Date Symbol
5 20171121 AADR
6 20171121 AAL
7 20171121 AAMC
8 20171121 AAME
9 20171121 AAN
10 20171121 AAOI
11 20171121 AAON
12 20171121 AAP
如果要将其分配给df
,请执行此操作。这些操作不在原地。
df = df.loc[5:12, ['Date', 'Symbol']]
请注意,您丢失了原始数据帧。如果要将切片分配给不同的变量,也可以这样做...但请确保复制以防止链式分配。
df2 = df.loc[5:12, ['Date', 'Symbol']].copy()
进一步阅读 -