Предположим, у меня есть кадр данных 5 * 3, в котором третий столбец содержит пропущенное значение
1 2 3
4 5 NaN
7 8 9
3 2 NaN
5 6 NaN
Я надеюсь сгенерировать значение для пропущенного правила, основанного на том, что первый продукт второй столбец
1 2 3
4 5 20 <--4*5
7 8 9
3 2 6 <-- 3*2
5 6 30 <-- 5*6
Как я могу сделать это, используя фрейм данных? Благодарю.
Как добавить условие для расчета недостающего значения, как это?
if 1st % 2 == 0 then 3rd = 1st * 2nd
else 3rd = 1st + 2nd
1 2 3
4 5 20 <-- 4*5 because 4%2==0
7 8 9
3 2 5 <-- 3+2 because 3%2==1
5 6 11 <-- 5+6 because 5%2==1
Ответы:
Предполагая три столбца вашего фрейма данных
a
,b
иc
. Это то, что вы хотите:Полный код:
источник
np.isnan
не поддерживает нечисловые данные. Это не проблема, так как у ОП были числовые столбцы и арифметические операции, но в остальномpd.isnull
это лучшая альтернатива.Другой вариант:
df.loc[(pd.isnull(df.C)), 'C'] = df.A * df.B
источник
Как насчет использования
fillna()
метода dataframe?df['C'].fillna(df.A * df.B)
источник
Предполагая, что три столбца в вашем фрейме данных
a
,b
иc
. Затем вы можете выполнить необходимую операцию следующим образом:источник
np.where(pd.isnull(df.c), df.a * df.b, df.c)