Замените пустые значения строкой - PullRequest
0 голосов
/ 11 июля 2020

Мне нужно управлять файлом csv таким образом, чтобы go в файле csv искать пустые поля между c0-c5 в моем примере файла csv. с файлом csv, где бы ни были пробелы, я хотел бы заменить пробел на любой текст, который я хочу, например "not found" , но манипуляции, которые мне нужны, я действительно ничего не могу найти .. может это невозможно?

также, мне интересно, как изменить имя столбца .. спасибо ..

#!/bin/env python


import pandas
data = pandas.read_csv('report.csv')
data = data.drop(['date',axis=1)
data.to_csv('final_report.csv')

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 12 июля 2020

В качестве альтернативы и с учетом вашего «вопроса комментария» (если вы не обязательно хотите использовать pandas, как в ответе n1colas.m) используйте замену строк и просто l oop поверх вашего файла с помощью:

with open("modified_file.csv","w") as of:
  with open("report.csv", "r") as inf:
    for line in inf:
     if "#" not in line: # in the case your csv file has a comment marker somewhere and it is called #, the line is skipped, which means you get a clean comma separated value file as the outfile- if you do want to keep such lines simply remove the if condition
       mystring=line.replace(", ,","not_found").replace("data","input") # in case it is not only one blank space you can also use the regex for n times blank space here
       print(mystring, file=of, end=""); # prints the replaced line to outfile and writes no newline

Я знаю, что это не самый эффективный способ сделать это, но, вероятно, тот, при котором вы легко понимаете, что делаете, и можете изменить это по своему желанию. С любыми CSV-файлами разумного размера он мог работать почти мгновенно. Также для целей тестирования всегда используйте отдельный файл (из) для таких замен вместо того, чтобы писать в свой infile, как кажется в вашем вопросе. Убедитесь, что он сделал то, что вы хотели. ТОЛЬКО ТОГДА перезапишите свой infile. Сначала это может показаться ненужным, но случаются ошибки ...

0 голосов
/ 12 июля 2020

Вы должны выполнить эту строку

data['data'] = data['data'].fillna("not found")

Здесь документация https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

Вот пример

import pandas
data = pandas.read_csv('final_report.csv')
data.info()
data['data'] = data['data'].fillna("Something")
print(data)

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

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