2016-06-24 4 views
2

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

Я понимаю, как добавить имена файлов в один файл:

my_file = pd.read_csv('path\the_file.csv', names = ['first','second','third']) 

Но мне нужно пойти в мой каталог и перебрать большое количество файлов CSV. Я честно даже не знаю, как это сделать (грустный знаю). Мне удалось прокрутить имена файлов, используя os.listdir, но это не очень полезно для меня, когда мне нужны данные в них. Я знаю, что делать, когда получаю имена этих столбцов.

Использование панд, когда это возможно, является весьма предпочтительным. Я много смотрел, но не мог найти ничего, что действительно работает. Я очень благодарен за помощь!

Редактировать: Это часть того, что я буду делать, но вам нужно сделать для ВСЕХ файлов csv в папке.

my_file = pd.read_csv('path\the_file.csv', names=['first','second','third']) 
first_col = my_file['first'] 
second_col = my_file['second'] 
third_col = my_file['third'] 
key_codes = [] 
key_codes.append(second.map(str) + third.map(str)) 

Таким образом, если столбец 2 имеет, «123» и колонка 3 имеет, «4», то я делаю «1234» Я делаю больше, но сейчас мне просто нужно выяснить, как перебирать файлы и добавлять к ним одинаковое имя/заголовок.

+0

Я не думаю, Я понимаю проблему. Пожалуйста, четко объясните, что не работает. – Julien

+0

Привет, @wiredflamingo, вы можете показать нам свои шаги, пожалуйста? Помните, что SO - это не фабрика кода или код для написания аутсорсинга ... Добро пожаловать в SO или сорт ... –

+0

, когда вы зацикливаете все файлы, какой желаемый результат? Список данных 'DataFrames'? Или вам нужно, чтобы все данные были привязаны к одному? – jezrael

ответ

0

IIUC вам нужно glob:

#glob can use path with *.txt - see http://stackoverflow.com/a/3215392/2901002 
import glob 
key_codes = [] 
for files in glob.glob('files/*.csv'): 
    df = pd.read_csv(files, names = ['first','second','third']) 
    key_codes.append(df.second.map(str) + df.third.map(str)) 

Другое решение с выбором second и third колонки по iloc, там также будет удален параметр names и добавить header=None к read_csv:

#glob can use path with *.txt - see http://stackoverflow.com/a/3215392/2901002 
import glob 
key_codes = [] 
for files in glob.glob('files/*.csv'): 
    df = pd.read_csv(files, header=None) 
    key_codes.append(df.iloc[0,1].astype(str) + df.iloc[0,2].astype(str)) 
+0

О, спасибо! Я не видел эту ссылку раньше. Я пробовал что-то очень похожее на то, что вы разместили на самом деле, но в конце концов я потерял все мои попытки. – WiredFlamingo

Смежные вопросы