Проверьте значение в следующей строке, чтобы применить определенные правила к текущим строкам в Python. - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть датафрейм, который содержит два столбца: идентификатор и проблемы;на основе этого фрейма данных я создаю новый столбец: questions_v1, используя:

mydf['Issue_v1']='"'+ mydf['issues']+ '"' +',' 

Вот мои примеры данных, извините, что обновляется снимок экрана с ошибкой, поэтому мне нужно ввести следующий формат:

 id         issues    issues_v1
1001           A        "A",  
1001           A        "A"    
1001          NaN       NaN   
1002           A        "A",    
1002           A        "A"    
1002          NaN       NaN

Однако, правило, которое я хочу применить здесь, позволяет значениям в столбце B (выпуски) проверять значения в следующей строке, если это NaN, затем дать мне «A» без «,», в противном случае верните «A», конечно, если текущая строка равна нулю, тогда верните пустое значение.

Просто FYI, если логика в excel (аналогично) должна быть:

= IF (ISBLANK(B2), "", IF (ISBLANK (B3), "" "" & B2 & "" "", "" "& B2 &" "", "))

Итак, как я могу достичь той же цели, используяPython?спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

Давайте сделаем это в два этапа с Series.mask:

m = df.issues.notna()
a = df['issues'].mask(m, '"' + df.issues + '"')
b = pd.Series('', index=a.index).mask(df.issues.shift(-1).notna() & m, ',')

df['issues_v1'] = (a + b)

df    
     id issues issues_v1
0  1001      A      "A",
1  1001      A       "A"
2  1001    NaN       NaN
3  1002      A      "A",
4  1002      A       "A"
5  1002    NaN       NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...