我需要添加列标题,然后将以下内容导出到csv。 但是,当我导出列表时,我得到了列中每个字符的最后一行。
这是输出:
如果我实现df = pd.DataFrame([d]) 我得到以下信息:
创建此列表的代码如下
soup=BeautifulSoup(s,'lxml')
soup.prettify()
for anchor in soup.findAll('a', href=True):
s=anchor['href']
if 'bus' in s:
urlparse(s)
path = urlparse(s).path[1:]
parts = path.split('/')
d= parts[2:4]
df=pd.DataFrame(d)
print(df)
答案 0 :(得分:1)
我认为问题在于,对于循环的每次迭代,您都在创建一个 new DataFrame
;而我想您可能想要的是一个DataFrame
,其中包含d
的所有 all 值。请尝试以下操作:
# Instantiate an empty list to collect values of `d` for each iteration
d_values = []
soup=BeautifulSoup(s,'lxml')
soup.prettify()
for anchor in soup.findAll('a', href=True):
s=anchor['href']
if 'bus' in s:
urlparse(s)
path = urlparse(s).path[1:]
parts = path.split('/')
d = parts[2:4]
# Append `d` to your list, creating a list of lists
d_values.append(d)
# Once your loop is done, create a DataFrame from your list of lists
df = pd.DataFrame(d_values, columns=['col1name','col2name'])