Удаление пустых строк на основе значений «,,,,,,» в первом столбце из добавленных CSV-файлов (pandas)

#python #jupyter-notebook

#python #jupyter-записная книжка

Вопрос:

Я хочу передать фрейм данных, основанный на присоединенных к серверу csv, другому методу.

 col0 = ["Dov"] 
values = A, B
 

Но есть некоторые CSV-файлы, которые содержат только «,,,,,,,,» в разной длине в col0 в конце. от 20 до 50 строк. Длина странных значений одинакова для файла, но отличается от файла к файлу. Остальные столбцы заполняются только обычными.

Я играл с loc, drop и dropna. Некоторое время боролся и искал в stackoverflow. По-прежнему без подсказки.

 def dataImport():
    header_appended = False
    concat_i = []
    progress = len(linkGenerator())
    count = 1
    print("0 of "   str(progress))
    for i in list(linkGenerator()):
        if header_appended != True:
            print("Appending : "   str(i))
            df_raw = pd.read_csv(i, header = 0, sep = ",", engine = "python", encoding = "ISO-8859-1", index_col=False )
            header_appended = True
            print("Appended.")
            time.sleep(2)
        else:
            print("Appending : "   str(i))
            df_internal = pd.read_csv(i, sep = ",", engine = "python", encoding = "ISO-8859-1", index_col=False )
            concat_i.append(df_internal)
            print("Appended.")
            time.sleep(2)
            print(str(count)   " of "   str(progress))
            count = count   1
            df_raw = pd.concat(concat_i, ignore_index = True)
    return df_raw
 

Работает до сих пор. df_raw = pd.concat(concat_i, ignore_index = True) Моя проблема заключается только в следующей части.

Ответ №1:

Код, который я сделал, мог бы это сделать:

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

Надеюсь, это поможет. Категория функций str довольно мощна в pandas. Я не знаю, какое минимальное количество «,» вы видите, а также col0 должен быть типом str / object.

Ответ №2:

Спасибо. за попытку мне помочь. К сожалению, не сработало.

     df_raw = df_raw[~df_raw["Div"].str.match(",,,,,,,,,,,,,,,,,,,,,,,,,,,", na = False)] 
    # df_raw = df_raw.drop(df_raw["Div"] != 0, inplace = True) 
    # df_raw = df_raw.drop(["Div"] == "") 
    # df_raw = df_raw.loc[df_raw["Div"] != ""]  
    # df_raw = df_raw[(df_raw["Div"] != ",,,,,,") | (df_raw["Div"] != ",,,,,,,,,,,,,,,,,,,,,,,,,,,,")].copy()
 

Результат каждый раз:

Начать

Конец

Ответ №3:

Понял! Решение было:

 df_raw.dropna(subset = ["Div"], inplace = True)