Как получить значение для 3-го столбца в кадре данных в зависимости от разницы между первым и вторым столбцами? - PullRequest
3 голосов
/ 15 октября 2019

Итак, у меня есть следующая таблица:

start end 5 5 4 8 10 19 4 4

Теперь я хочу сделать следующее, если значение в двух столбцах вконкретный ряд равен, затем выведите только один из них в 3-м столбце. Если они разные, то выведите - start + "-" + end. Данные находятся в кадре данных. Пример таков:

начальный конечный диапазон 5 5 5 4 8 4-8 10 19 10-19 4 4 4

Вот код, который я пробую:

if df['start'] - df['end'] != 0:
   df['range'] = df['start'] + "-" + df['end']
else:
   df['range'] = df['start']

Но это не работает. Как я могу это сделать?

1 Ответ

1 голос
/ 15 октября 2019

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

df['range'] = np.where(df['start'] != df['end'], df['start'] + "-" + df['end'], df['start'])

Аналогичное другое решение:

df['range'] = df['start'] + np.where(df['start'] != df['end'], "-" + df['end'], '')

print (df)
  start end  range
0     5   5      5
1     4   8    4-8
2    10  19  10-19
3     4   4      4

Решение, если значения не являются строками:

s = df['start'].astype(str) 
e = df['end'].astype(str)

df['range'] = np.where(df['start'] != df['end'], s + "-" + e, s)

Похоже другое решение:

df['range'] = s + np.where(df['start'] != df['end'], "-" + e, '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...