我可以下载文件:
seasons = [2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]
epl_tables = {}
epl_seasons = {}
for year in seasons:
start_year = str(year)[-2:]
end_year = str(year+1)[-2:]
season = start_year + end_year
epl_seasons[season] = pd.read_csv("https://www.football-data.co.uk/mmz4281/{}{}/E0.csv".format(start_year, end_year)).dropna(how='all')
epl_tables[season] = league(epl_seasons[season])
这很好。
但是,当我尝试通过在季节中添加2004来添加2004-05季节时,出现了问题,代码失败。
seasons = [2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017]
问题是由csv文件的第337至345行中的裁判姓名之前的空格引起的。
我可以通过手动删除空白然后从磁盘加载来解决此问题,但这显然不理想。
我尝试了多种方法使其正常工作,如下所示,但似乎无济于事,
epl_seasons[season] = pd.read_csv("https://www.football-data.co.uk/mmz4281/{}{}/E0.csv".format(start_year, end_year), delimiter=',', encoding="utf-8", skipinitialspace=True).dropna(how='all')
一个潜在的复杂性是,当我在excel中打开文件时,该空间显示为空白,但是随后我在libreCalc中打开它(在Ubuntu中,这是我正在使用的东西),它显示为一个未知字符,这是一个问题在以45度倾斜的黑匣子中标记。在下面的链接中查看PeterMau的答案,以了解此未知字符的外观。
https://ask.libreoffice.org/en/question/113125/characters-turned-into-question-marks/
有人可以告诉我谁可以自动删除这些空格/未知字符吗?
答案 0 :(得分:1)
您可以使用.str.strip():
删除字符串中的空格。epl_seasons[season]['COLUMN NAME'] = epl_seasons[season]['COLUMN NAME'].str.strip()
这不应该是手动过程。只需添加一行,以便在导入CSV文件时也可以清理有问题的列。
显然,这仅适用于特定列。这是一个针对不同线程的答案,该线程致力于消除每个df单元中的空白:
答案 1 :(得分:0)
只需在我的数据列上运行str.strip()
函数,并传递导致问题的字符,就我而言,该字符就是?
,如下所示:
df[newcol]= df[oldCol].str.strip('?')