новичок панда изменить данные строки на основе кода - PullRequest
0 голосов
/ 30 октября 2018

Я новичок в панде и питоне, пытаюсь выучить его.
Я хотел бы перебрать ряды панды, чтобы применить простую кодированную логику.
Вместо причудливых функций отображения я просто хочу простую кодированную логику.
Так что потом я могу легко адаптировать его для других правил закодированной логики.

В моем фрейме данных dc,
Мне нравится проверять, если столбец AgeUnkown == 1 (или >0)
И если это так, он должен переместить значение столбца Age в AgeUnknown.
А затем сделать Age равным 0,0
Я попробовал различные комбинации моего кода ниже, но он не будет работать.

# using a row  reference #########
for index, row in dc.iterrows():
   r = row['AgeUnknown']
   if (r>0):
     w = dc.at[index,'Age']
     dc.at[index,'AgeUnknown']=w
     dc.at[index,'Age']=0

Еще одна попытка

for index in dc.index:
  r = dc.at[index,'AgeUnknown'].[0]  # also tried .sum  here
    if (r>0):
      w= dc.at[index,'Age']
      dc.at[index,'AgeUnknown']=w
      dc.at[index,'Age']=0

Также пробовал

  if(dc[index,'Age']>0    #wasnt allowed either

Почему это не работает, насколько я понял, к кадру данных можно обращаться, как указано выше.

1 Ответ

0 голосов
/ 30 октября 2018

Я понимаю, что вы запросили решение, включающее итерацию df, но я подумал, что предоставлю решение, которое я считаю более традиционным.

Не повторяющееся решение вашей проблемы выглядит примерно так: 1) получить все индексы, которые соответствуют вашим критериям 2) установить те индексы df, которые вы хотите.

# indexes where column AgeUnknown is >0
inds = dc[dc['AgeUnknown'] > 0].index.tolist()
# change the indexes of AgeUnknown to to the Age column
dc.loc[inds, 'AgeUnknown'] = dc.loc[inds, 'Age']
# change the Age to 0 at those indexes
dc.loc[inds, 'Age'] = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...