Как напечатать имена файлов, условно основанные на нескольких импортированных CSV-файлах - PullRequest
0 голосов
/ 12 февраля 2020

Мне было интересно, есть ли способ, который выводит имена файлов условно на основе нескольких импортированных CSV-файлов. Моя процедура:

  1. Установить мой путь.
  2. Получить все CSV-файлы по этому пути.
  3. Импортировать все эти CSV-файлы, захватывая только номера каждого файла имена и сохраните это в 'new_column'.
  4. Проверьте количество столбцов каждого файла и хотите исключить файлы, которые не имеют 10 столбцов (получено с использованием shape[1]).
  5. Теперь, Я хочу распечатать фактические имена файлов, которые не имеют 10 столбцов -> Я застрял здесь.

У меня нет проблем до номера 4. Однако я я застрял на 5. Как мне добиться 5.?

# setting my path
path = r'my\path'

# make a function that grabs all csv files in my path
all_files = glob.glob(path + "/*.csv")

# grab the numeric part of each file
def get_numbers_from_filename(filename):
    return re.search(r'\d+', filename).group(0)

# import all the actual csv files and add a 'new_column' column based on the "get_numbers_from_filename" function
li = []
for filename in all_files:
        df = pd.read_csv(filename, index_col=None, header=0)
        df['new_column'] = get_numbers_from_filename(filename)
        li.append(df)

# check frequency of column numbers for each file using a frequency table
result = []
for lis in li:
        result.append(lis.shape[1])

# make this a dataframe
result = pd.DataFrame(result, columns = ['shape'])

# actual checking step
result['shape'].value_counts()

# grab only shape == 10 files to correctly concatenate
result = []
for lis in li:
        if lis.shape[1] == 10:
                result.append(lis)

## my solution for part 5:
# print and save all the paths of my directory
path = os.listdir(path)

# grab file names if columns numbers are not 10
result3 = []
for paths in path:
    for list in li:
        if lis.shape[1] != 10:
            result3.append(paths)

мое решение дает пустую строку []

...