Чтобы преобразовать данные из Synchro в удобочитаемый формат в excel, необходимо удалить лишние столбцы.
Необработанные данные из текстового файла:
Lane Group WBT WBR NBL NBT NBR SBL SBT SBR Ø3 Ø7
Lane Configurations <1> 0 1 2> 0 1 2 1
Чтение этого текстового файла в формате csv помещает каждую строку в одну строку.
Моя цель: 1.) читать как csv с правильно разделенными строками/столбцами (используя \t в качестве разделителя)
2.) Отбросьте все столбцы и данные после столбца «SBR».
Код, который я использую:
AMtxt = pd.read_csv('AM.txt', sep='\t+', header = None, error_bad_lines=False, warn_bad_lines = False, quoting=3, skiprows=1, engine='python')
AMtxt.drop(columns = AMtxt.columns[-2:], axis = 1, inplace = True)
AMtxt.to_csv('AM.csv')
Когда я пытаюсь использовать это, он удаляет строку «Группа дорожек» для некоторых записей на этапе read_csv.
Как должен выглядеть CSV:
CSV выглядит так для проблемных записей (тех, где есть данные в столбцах, которые я удаляю
Обновлено: РЕШЕНО
AMtxt = pd.DataFrame(open('AM.txt','r').readlines())
AMtxt = AMtxt[0].str.split('\t', expand = True)
for column in AMtxt:
AMtxt[column] = AMtxt[column].str.strip()
AMtxt.to_csv('AM.csv')
Этот метод работал для меня.
Спасибо за совет! Я не уверен, использует ли он настоящие вкладки, \t работает как разделитель. Удаление \n приводит к потере большего количества данных, когда я добираюсь до проблемных записей - я теряю каждую строку, а не только те, которые содержат символы в столбцах, которые я хочу удалить
Я думаю, что правильный способ - обработать файл с помощью read_fwf. Но я не могу сказать больше, если вы не предоставите первые строки файла такими, какие они есть на самом деле...
Помогло ли предложение @SergeBallesta использовать функцию «фиксированной ширины»? По крайней мере, из предоставленного вами примера столбцы располагаются с пробелами, а не с вкладками, но это может быть проблемой копирования и вставки. Спасибо! :)
Предложение Сержа может сработать, но оно приводит к новой проблеме, когда я не могу понять, как читать файл с разделителем, используя read_fwf. Он может прочитать файл .txt без ошибок, но все это в одном столбце AMtxt = pd.read_fwf('AM.txt', header = None, delimiter = "\s+")
Вместо того, чтобы добавлять решение на свой вопрос, вы должны добавить его в качестве ответа. (Относитесь к этому так, как будто вы отвечаете на чей-то вопрос.)
Решение, которое сработало для меня:
AMtxt = pd.DataFrame(open('AM.txt','r').readlines())
AMtxt = AMtxt[0].str.split('\t', expand = True)
for column in AMtxt:
AMtxt[column] = AMtxt[column].str.strip()
AMtxt.drop(columns = AMtxt.columns[-(len(AMtxt.columns) - 14):], axis = 1, inplace = True)
AMtxt.to_csv('AM.csv')
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
Никогда не добавляйте \n в набор возможных разделителей столбцов, это должен быть только разделитель строк. Это причина ваших перемешанных рядов. Кстати, ваш исходный файл действительно содержит вкладки (символ \t)? Он больше похож на файл с фиксированной шириной, чем на CSV...