np выберите оператор if, чтобы вернуть значение для условного оператора - PullRequest
0 голосов
/ 08 января 2019

Я хочу создать новый столбец, который возвращает значение 1, если приведенное ниже условие истинно, и 2, если ложное, и я не уверен, почему приведенное ниже не работает?

t1 = x['timestamp_1'] < x['timestamp_2']


x['new'] = np.select([t1], [1], default=2)

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Использование np.where :

#Convert to datetime
x['timestamp_1'] = pd.to_datetime(x['timestamp_1'])
x['timestamp_2'] = pd.to_datetime(x['timestamp_2'])
t1 = x['timestamp_1'] < x['timestamp_2']

x['new']  = np.where(t1, 1, 2)

Если условие истинно, оно вернет 1, иначе вернется 2.

0 голосов
/ 08 января 2019

Вы можете использовать интуитивное понимание списка , после вы конвертируете свои временные метки (pd.to_datetime), например так:

df['new'] = [1 if x==True else 2 for x in list(df.timestamp_1 < df.timestamp_2)]
0 голосов
/ 08 января 2019

использовать numpy где

#convert both columns to pd.to_datetime

x[['timestamp_1','timestamp_2']] = x[['timestamp_1','timestamp_2']].apply(pd.to_datetime,errors='coerce')

t1 = x['timestamp_1'] < x['timestamp_2']
x['new'] = np.where(t1,1,2)

который работает как:

np.where(cond,valueiftrue,valueiffalse)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...