Задать вопрос
@sunsexsurf
IT & creative

Как в pandas заполнить столбец по данным из этого же столбца в цикле?

test=pd.DataFrame({"a":[5,3,None,4],
                 "b":[None,2,4,3],
                 "c":[4,3,3,5],
                 "d":[5,4,None,None]})


На выходе получаю:

----a--b--c--d
0 5.0 NaN 4 5.0
1 3.0 2.0 3 4.0
2 NaN 4.0 3 NaN
3 4.0 3.0 5 NaN


теперь я хочу взять строки, удовлетворяющие условию столбца 'c' ==3 и по этому условию заполнить столбец 'd':

test[test['c']==3]['d'] = test[test['c']==3]['d'].ffill()


ничего не получается.
Как починить?
Спасибо заранее.

UPD: плюс, если можно, код цикла.
  • Вопрос задан
  • 1493 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dmshar
То, с чем вы столкнулись вполне известный эффект, который называется "эффект цепочечного индексирования". Он описан в серьезных источниках по Pandas, которыми и советую пользоваться, а не всякими профанированными видосиками да статейками.
Тем не менее, ответ на ваш вопрос прост:

test=pd.DataFrame({"a":[5,3,None,4],
"b":[None,2,4,3],
"c":[4,3,3,5],
"d":[5,4,None,None]})
test.loc[test['c']==3,'d']=test[test['c']==3]['d'].ffill()
test

Результат:
a    b  c    d
0  5.0  NaN  4  5.0
1  3.0  2.0  3  4.0
2  NaN  4.0  3  4.0
3  4.0  3.0  5  NaN


Оно?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы