как внести изменения в пустые места в csv-файле?

#python #pandas #dataframe #csv #null

Вопрос:

Я работаю с огромным csv-файлом. Я пытаюсь умножить столбцы, но это не позволяет мне это сделать, так как там много пустых ячеек. Таким образом, в основном я пытаюсь написать оператор if else, в котором, если ячейка пуста, чем эта копия ячейки, значение над ней, и если над ней нет значения (например, в строке 1, где единственное значение над ней-заголовок), оно должно просто написать 0 (ноль). В чем мне в основном нужна помощь, так это в структурировании оператора if else.

Это скриншот фрейма данных, с которым я работаю

Ответ №1:

Для каждого столбца в вашем фрейме данных используйте метод, fillna чтобы заменить значения None ячеек значением предыдущей строки в этих столбцах. Для первой строки в столбце вы можете назначить это значение 0 вручную. То, что я сказал, можно сделать, выполнив следующее:

 for col in list(df):
    df[col].fillna( method ='ffill', inplace = True)
    if(df[col][0] == None):
        df[col][0] = 0
 

Комментарии:

1. Спасибо. Есть ли способ заполнить нули во всех пустых ячейках в первой строке. также есть способ поставить ноль только в выбранных столбцах первой строки. Я в основном хочу сделать последнее

2. На самом деле вы можете сделать это с помощью данного кода, просто создайте список нужных столбцов, которые вы хотите поместить 0 в первую строку, если значение равно нулю, и измените условие if на if(df[col][0] == None amp;amp; col in desiredColumnList):

3. @Rookie18, если это отвечает на ваш запрос, пожалуйста, подумайте о том, чтобы принять ответ

Ответ №2:

Сделать это по всем столбцам сразу вы можете ffill , а затем fillna

 import pandas as pd

df = pd.DataFrame({'a': [None, 1, None], 'b': [2, None, None]})
df.ffill().fillna(0)
 

дает

      a    b
0  0.0  2.0
1  1.0  2.0
2  1.0  2.0