Чтение имен файлов CSV из списка и использование их в скрипте - PullRequest
0 голосов
/ 11 июля 2019

У меня есть папка с CSV-файлами, где в начале каждого файла есть строка, идентифицирующая игру, и тег в конце, указывающий, какая таблица из этих игр.Пример:

20020905_nyg_scoring.csv
20020905_nyg_team_stats.csv
20020908_buf_scoring.csv
20020908_buf_team_stats.csv

Я написал скрипт, который объединяет файлы csv по первой части имени файла в словарь, а затем превращает этот словарь в список.Я хочу прочитать пары имен файлов и выполнить формирование кадра данных для каждой пары вместе.В конечном итоге я объединю данные из парных файлов в один фрейм данных (в данном случае моя проблема не в concat).

import numpy as np
import pandas as pd
import os

game_list = {}
path = r'C:\Users\jobon\Documents\New NFL Stats\Experimental\2002 Game Logs'
for file in os.listdir(path):
    game_pairing = game_list.get(file[:12],[])
    game_pairing.append(file)
    game_list[file[:12]] = game_pairing

game_pairs = []
for game, stats in game_list.items():
    game_pairs.append(stats)

for scoring, team_stats in game_pairs:
    for file in os.listdir(path):
        df1 = pd.read_csv(scoring, header = 0, index_col = 0)
        df1.drop(['Detail', 'Quarter', 'Time', 'Tm'], axis = 1, inplace = True)
        ...more shaping...

Предполагается, что в конце я получу окончательный набор фреймов данных, сгенерированных из каждой пары игр.файлы, которые я могу объединить.

Вместо этого я получаю

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-37-fb1d4aa9f003> in <module>
     18 for scoring, team_stats in game_pairs:
     19     for file in os.listdir(path):
---> 20         df1 = pd.read_csv(scoring, header = 0, index_col = 0)
     21         #df1.drop(['Detail', 'Quarter', 'Time', 'Tm'], axis = 1, inplace = True)
     22         print(df1)

FileNotFoundError: [Errno 2] File b'20020905_nyg_scoring.csv' does not exist: b'20020905_nyg_scoring.csv'

Файлы находятся в папке, и это сработало для построения списка, но я не знаю, почему это внезапно может 'Теперь не могу найти файлы.

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Я только что запустил твой код. Я думаю, что проблема в том, что ваши .csv файлы находятся в папке path, поэтому вы не можете найти файлы, если просто используете имя файла scoring без имени каталога path. Чтобы это исправить, вам нужно

scoring = os.path.join(path, scoring)

в вашем цикле.

0 голосов
/ 11 июля 2019

Похоже, что первая переменная, которую вы передаете в метод read_csv, является не строковым литералом, а байтовым литералом. Вот почему в ошибке упоминается файл b'20020905_nyg_scoring.csv, а не 20020905_nyg_scoring.csv. Этот b в начале обозначает байтовый литерал.

Изменение

df1 = pd.read_csv(scoring, header = 0, index_col = 0)

до

df1 = pd.read_csv(scoring.decode("utf-8"), header = 0, index_col = 0)

должен исправить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...