#python #file #syntax #spyder #delete-row
#питон #файл #синтаксис #spyder #удалить строку #python
Вопрос:
Я пытаюсь запустить скрипт для более чем 900 файлов, используя платформу Spyder, целью которой является удаление первых 3 строк данных и определенных столбцов. Я пытался изучить другие подобные вопросы, но не смог достичь желаемых результатов.
Мой код для одного текстового файла выглядит следующим образом:
import pandas as pd
mydataset = pd.read_csv('vectors_0001.txt')
df = pd.DataFrame(mydataset)
df.drop(df.iloc[:,:2], inplace = True, axis = 1)
df.drop([0,1,3], axis = 0, inplace = True)
df = df.dropna(axis = 0, subset=['Column3','Column4'])
Затем я хочу изменить приведенный выше код, чтобы его можно было применять к последовательным текстовым файлам, все текстовые имена файлов: vectors_0001, vectors_0002, …, vectors_0900. Я пытался сделать что-то подобное, но я продолжаю получать ошибки. Возьмем в качестве примера приведенный ниже:
(Обратите внимание: ‘u [m / s]’, ‘v [m / s]’ — это столбцы, которые я хочу сохранить для дальнейшего анализа данных, а от других столбцов я хочу избавиться.)
import glob
import os.path
import sys
import pandas as pd
dir_of_interest = sys.argv[1] if len(sys.argv) > 1 else '.'
files = glob.glob(os.path.join(dir_of_interest, "*.txt"))
for file in files:
with open('file.txt', 'w') as f:
f.writelines(3:)
df = pd.read_csv("*.txt")
df_new = df[['u [m/s]', 'v [m/s]']
df_new.to_csv('*.txt', header=True, index=None)
with open('file.txt','r ') as f:
print(f.read())
Однако я попытался запустить его и получил сообщение об ошибке:
f.writelines(3:)
^
SyntaxError: invalid syntax
Я действительно хочу разобраться в этом и перейти к своему анализу данных. Пожалуйста, заранее благодарю вас.
Ответ №1:
Я не совсем уверен в том, чего вы пытаетесь достичь здесь, но вы неправильно используете функции writelines. Он принимает список в качестве аргумента
https://www.w3schools.com/python/ref_file_writelines.asp
Вы даете ему «3:», что недопустимо. Может быть, вы хотите предоставить ему часть существующего списка?
Комментарии:
1. Я попытался изменить: «f.writelines (3:)» на «f.writelines (f.readlines () [3:])», это как-то сработало, но теперь я получаю другую ошибку: df_new.to_csv (‘*.txt’, заголовок = True, индекс = None) ^ SyntaxError: недопустимый синтаксис