#python #pandas #csv #glob
Вопрос:
У меня есть много CSV-файлов в подкаталогах в одной папке. Все они содержат твиты и другие метаданные. Я заинтересован в удалении большей части этих метаданных и сохранении самих твитов и их времени. Я использовал glob для чтения файлов, и часть удаления, похоже, работает нормально. Однако я не уверен, как сохранить выходные данные, чтобы все файлы были сохранены и с их исходным именем файла.
import pandas as pd
import glob
path = r'D:tweets'
myfiles= glob.glob(r'D:tweets***.csv', recursive=True)
for f in myfiles:
df = pd.read_csv(f)
df = df.drop(["name", "id","conversation_id","created_at","date"], axis=1)
df = df[df["language"].str.contains("bn|ca|ckbu|id||zh")==False]
df.to_csv("output_filename.csv", index=False, encoding='utf8')
Комментарии:
1. Есть ли у них проблемы с отступами в вашем вопросе? Если нет, то в файле есть не только последний файл D:tweets преобразуется обратно в csv.
2. Единственный отступ, который у меня есть, находится в шестой строке (df = pd.read_csv(f))
3. Поскольку вы обрабатываете каждый из списка
myfiles
, ваш код должен быть частью цикла for. я не думаю, что вам нужно будет перезаписывать исходный файл, тогда что-то вроде поможетdf.to_csv(os.path.splitext(f)[0] "_transformed.csv")
4. @SimpleApp Это сработало как по волшебству!!! Огромное вам спасибо!!
5. @Ercan Taner Большое вам спасибо, теперь это работает благодаря вам обоим!
Ответ №1:
Если вы сделаете это таким образом, он перезапишет тот же файл:
for f in myfiles:
df = pd.read_csv(f)
df = df.drop(["name", "id","conversation_id","created_at","date"], axis=1)
df = df[df["language"].str.contains("bn|ca|ckbu|id||zh")==False]
df.to_csv(f, index=False, encoding='utf8')