Я новичок в этом, так что это может звучать странно, но в основном у меня большой массив данных, но для упрощения предположим, что это следующий кадр:
import pandas as pd
import numpy as np
dfn = pd.DataFrame({'a':[1,2,3,4,5],
'b':[6,7,8,9,10],
'c':np.nan})
dfn
Вывод:
a b c
0 1 6 NaN
1 2 7 NaN
2 3 8 NaN
3 4 9 NaN
4 5 10 NaN
То, что я хочу сделать, это заполнить значения в столбце «c» на основе условия, а именно, если соответствующее значение строки в «a» нечетно, то добавить его к соответствующему значению строки » b 'и введите в' c ', в противном случае просто используйте значение' a 'для' c '.
В настоящее время у меня есть следующее:
for row in range(dfn.shape[0]):
if dfn.loc[row]['a']%2!=0:
dfn.loc[row]['c']=dfn.loc[row]['a']+dfn.loc[row]['b']
else:
dfn.loc[row]['c']=dfn.loc[row]['a']
dfn
Вывод :
a b c
0 1 6 NaN
1 2 7 NaN
2 3 8 NaN
3 4 9 NaN
4 5 10 NaN
Кажется, здесь ничего не происходит, и я не совсем уверен, почему.
Я также попробовал другой подход:
is_odd=dfn[dfn['a']%2!=0]
is_odd['c'] = is_odd['a'] + is+odd['b']
is_odd
Здесь Как ни странно, я получаю правильный вывод:
a b c
0 1 1 2
2 3 3 6
4 5 5 10
Но когда я снова вызываю dfn, он выходит со всеми значениями NaN.
Я также пытался сделать это без использования имени переменной и ничего не происходит.
Есть идеи, что мне не хватает или есть ли способ сделать это?
Спасибо!