首页 > 解决方案 > 写入 csv 时出现 Python 错误。我究竟做错了什么?

问题描述

我收到这个错误。我正在尝试将此 df 写入 csv 或 excel(在本例中为 excel。我也尝试使用 CSV)。这些类型的错误以前没有出现过。任何人都可以帮助完成代码吗?如果在一个好的代码行中?

import pandas as pd
import requests
from bs4 import BeautifulSoup as bs

url = 'https://www.soccerbase.com/teams/home.sd'
r = requests.get(url)
soup = bs(r.content, 'html.parser')
teams = soup.find('div', {'class': 'headlineBlock'}, text='Team').next_sibling.find_all('li')

teams_dict = {}
for team in teams:
    link = 'https://www.soccerbase.com' + team.find('a')['href']
    team = team.text

    teams_dict[team] = link

team = []
comps = []
dates = []
h_teams = []
a_teams = []
h_scores = []
a_scores = []

consolidated = []
for k, v in teams_dict.items():
    print('Acquiring %s data...' % k)

    headers = ['Team', 'Competition', 'Home Team', 'Home Score', 'Away Team', 'Away Score', 'Date Keep']
    r = requests.get('%s&teamTabs=results' % v)
    soup = bs(r.content, 'html.parser')

    h_scores.extend([int(i.text) for i in soup.select('.score a em:first-child')])
    limit_scores = [int(i.text) for i in soup.select('.score a em + em')]
    a_scores.extend([int(i.text) for i in soup.select('.score a em + em')])

    limit = len(limit_scores)
    team.extend([k for i in soup.select('.tournament', limit=limit)])
    comps.extend([i.text for i in soup.select('.tournament a', limit=limit)])
    dates.extend([i.text for i in soup.select('.dateTime .hide', limit=limit)])
    h_teams.extend([i.text for i in soup.select('.homeTeam a', limit=limit)])
    a_teams.extend([i.text for i in soup.select('.awayTeam a', limit=limit)])

df = pd.DataFrame(list(zip(team, comps, h_teams, h_scores, a_teams, a_scores, dates)))

pd.set_option('display.width', 400)
pd.set_option('display.max_columns', 10)
d = pd.DataFrame(df)
# var = df[df['Team'] == 'Wolves']
pd.concat(df).to_csv(r'C:\Users\harsh\Desktop\Temp1\consolidated.csv', sep=',', encoding='utf-8-sig', index=False)

# print(df.to_string())
# print(df)

PY菜鸟我在编写代码时出错了吗?

标签: pythonpandasdataframecompiler-errors

解决方案


似乎 df 已经是一个数据框。所以我认为你不需要第 48 行。之后你可以这样做:

df.to_csv(r'C:\Users\harsh\Desktop\Temp1\consolidated.csv', sep=',', encoding='utf-8-sig', index=False)

推荐阅读