从MD文件读取数据帧

2024-06-07 06:00:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用this数据存储库做一个项目,对于每个足球赛季,在包含比赛数据的CSV文件上,有一个额外的自述文件,其中包含最终结果。这是一种类似于表的结构,我想把它读入一个数据帧中。我尝试过“读取csv”和“读取表格”,但我不确定使用的是什么分隔符,以及它是否可能使用多索引。。。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=针对的目标;+/-=目标差异;Pts=点数

如何才能最好地阅读此文件?干杯


Tags: 文件csv数据项目目标自述文件this结构
2条回答

此文件未格式化为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()

这个文件不是特定的格式——它是人类可读的,而不是机器可读的。因此,您可能首先需要自己进行一些转换

一个简单的方法:

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]

相关问题 更多 >