我正在使用this数据存储库做一个项目,对于每个足球赛季,在包含比赛数据的CSV文件的顶部,都有一个额外的自述文件,该文件具有最终结果。这是某种形式的表结构,我想将其读入Pandas数据框。我已经尝试过“ read_csv”和“ read_table”,但是我不确定正在使用什么定界符,以及是否可能使用多索引... MD文件如下:
- Home - - Away - - Total -
Pld W D L F:A W D L F:A F:A +/- Pts
1. Club Brugge 34 14 2 1 45:12 11 4 2 38:18 83:30 +53 81
2. RSC Anderlecht 34 14 1 2 44:14 8 4 5 39:23 83:37 +46 71
3. Germinal Beerschot 34 12 3 2 34:11 3 5 9 19:26 53:37 +16 53
4. RWD Molenbeek 34 9 6 2 24:9 4 8 5 15:20 39:29 +10 53
5. K Lierse SK 34 8 4 5 30:21 6 6 5 24:24 54:45 +9 52
6. Standard Liège 34 9 7 1 28:15 4 5 8 23:31 51:46 +5 51
7. Sporting Charleroi 34 8 7 2 37:21 5 4 8 22:32 59:53 +6 50
8. Cercle Brugge 34 7 5 5 27:23 6 5 6 24:24 51:47 +4 49
9. KFC Lommel SK 34 7 6 4 20:15 7 0 10 20:30 40:45 -5 48
10. SC Eendracht Aalst 34 8 6 3 37:21 4 4 9 18:29 55:50 +5 46
11. KV Mechelen 34 8 4 5 20:16 4 4 9 20:30 40:46 -6 44
12. KRC Harelbeke 34 8 1 8 26:26 5 3 9 14:22 40:48 -8 43
13. Royal Antwerp FC 34 7 4 6 26:23 4 5 8 12:23 38:46 -8 42
14. KAA Gent 34 8 2 7 21:22 2 9 6 18:27 39:49 -10 41
15. Sint-Truidense VV 34 7 4 6 29:28 4 3 10 13:32 42:60 -18 40
16. RFC Seraing 34 5 4 8 18:24 3 1 13 17:51 35:75 -40 29
17. KSK Beveren 34 4 7 6 24:25 2 2 13 14:32 38:57 -19 27
18. SV Zulte Waregem 34 3 4 10 18:36 1 5 11 12:34 30:70 -40 21
Pld =匹配项; W =比赛获胜; D =比赛结果; L =输掉比赛; F =目标; A =进球数; +/- =目标差;分=点
如何最好地阅读此文件?干杯!
答案 0 :(得分:1)
此文件未格式化为CSV格式(可以同时使用','和';'分隔符。 在您的情况下,您只能使用空格,因此该方法将是针对每一行按空格字符将其分割,摆脱空条目并按索引获取它们。
f = open("your.csv", 'r')
for l in f.readlines():
vals = [l for l in l.split(' ') if l]
index = vals[0]
name = vals[1]
goals_fa = tuple(vals[6].split(':'))
...
# fill dataframe
f.close()
答案 1 :(得分:1)
此文件的格式不是特定的-应该是人类可读的,而不是机器可读的。因此,您可能首先需要自己进行一些转换。
一种简单的方法:
lines = text.split('\n')
df = pd.DataFrame([re.split(r'\s+', line[34:]) for line in lines])
您可以直接命名列:
df.columns = [['home_pld', 'home_w', 'home_d', 'home_l', 'home_fa',
'home_pld', 'home_w', 'home_d', 'home_l', 'home_fa',
'total_fa', 'total_plusminus', 'total_points']]
并添加俱乐部名称:
df['club'] = [line[4:34].strip() for line in lines]