Добавление новых столбцов в фрейм данных на основе значения из другого столбца

Я обычно делаю эту функцию отдельно от всех моих проектов. Быстро и просто.

unfactorize <- function(df){
  for(i in which(sapply(df, class) == "factor")) df[[i]] = as.character(df[[i]])
  return(df)
}
1
задан Felix D. 17 January 2019 в 10:53
поделиться

2 ответа

Мне нравится np.where. Вот решение с ним:

import numpy as np
df.loc[:,'position1'] = np.where((df['switchopen'] == True) & (df['switchclose'] == False), 'open',
                        np.where((df['switchopen'] == False) & (df['switchclose'] == True), 'closed',
                        np.where((df['switchopen'] == False) & (df['switchclose'] == False), 'moving',
                                np.nan)))

Как видите, вы не можете установить NaN ни для одного из условий.

0
ответ дан Jorge 17 January 2019 в 10:53
поделиться

Учитывая ваши логические требования и ожидаемые результаты, это должно сработать

df.loc[(df['switchopen'] == True) & (df['switchclose'] == False), 'Position'] = 'open'
df.loc[(df['switchopen'] == False) & (df['switchclose'] == True), 'Position'] = 'closed'
df.loc[(df['switchopen'] == False) & (df['switchclose'] == False), 'Position'] = 'moving'
0
ответ дан specbug 17 January 2019 в 10:53
поделиться
Другие вопросы по тегам:

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