Я хочу объединить CSV, отбрасывая строки, сохраняя при этом только определенные столбцы - PullRequest
0 голосов
/ 21 мая 2018

Это код, который у меня есть:

import pandas as pd

import glob, os

os.chdir("L:/FMData/")

results = pd.DataFrame([])

for counter, file in enumerate(glob.glob("F5331_FM001**")):

    namedf = pd.read_csv(file, skiprows=[1,2,3,4,5,6,7], index_col=[1], usecols=[1,2])

    results = results.append(namedf)

    results.to_csv('L:/FMData/FM001_D/FM5331_FM001_D.csv')

Это, однако, создает новый документ в соответствии с инструкциями, но не копирует в него какие-либо данные.Я хочу посмотреть файлы в определенном месте, с именами по линиям FM001, объединить их, пропустить первые 7 строк в каждом CSV и сохранить только столбцы 1 и 2 в новом файле.Кто-нибудь может помочь с моим кодом?

Заранее спасибо !!!

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Чтобы объединить несколько файлов CSV, вы должны создать список данных.Затем объедините кадры данных в вашем списке с помощью pd.concat за один шаг.Это гораздо эффективнее, чем добавление к существующему фрейму данных.

Кроме того, вам нужно записать свой результат в файл вне вашего for цикла.

Дляпример:

results = []
for counter, file in enumerate(glob.glob("F5331_FM001**")):

    namedf = pd.read_csv(file, skiprows=[1,2,3,4,5,6,7], index_col=[1], usecols=[1,2])

    results = results.append(namedf)

df = pd.concat(results, axis=0)
df.to_csv('L:/FMData/FM001_D/FM5331_FM001_D.csv')
0 голосов
/ 21 мая 2018

Этот код работает на моей стороне (используя Linux и Python 3), он заполняет CSV-файл данными в.

Добавьте print сразу после read_csv, чтобы увидеть, действительно ли ваш CSV-файлчитает любые данные, иначе ничего не будет записано, как это:

namedf = pd.read_csv(file)
print(namedf)
results = results.append(namedf)

Он добавляет строку 1 (вероятно, потому что это считается заголовком), а затем пропускает 7 строк, а затем продолжить, это мой результат для файла CSVтолько что записано от одного до одиннадцати в строках: F5331_FM001.csv один
0 девять
1 десять
2 одиннадцать

Добавление: Если print (namedf) ничего не показывает, то проверьте входные файлы,Программа python ищет в ваших файлах L: / FMData /.Вы уверены, что ваши файлы находятся в этом каталоге?Вы можете изменить каталог, добавив правильный путь с помощью команды os.chdir.

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