#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