Python np.select не соответствует условиям - PullRequest
0 голосов
/ 27 мая 2019

У меня есть фрейм данных с номерами в первом и втором столбцах:

d = {'col1': [1,2,3,4,5,6,7,8,9,10], 'col2': [1,2,1,16,8,7,8.1,11.1,12.0,13.1]}

df = pd.DataFrame(data=d)

На самом деле у меня есть файл excel со всеми данными, которыми я не могу поделиться, но идея остается прежней.

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

conditions = [
    (df["col1"] > df["col2"]),
    (df["col1"] == df["col2"]),
    (df["col2"] - df["col1"] <= 1),
    (df["col2"] - df["col1"] <= 3),
    (df["col2"] - df["col1"] > 3.01),
    ]
choices = ['1less', '2equal', '3more up to 1', '4more up to 3', '5more above 3']

df['diff type'] = np.select(conditions, choices, default='6some_default_value')

Так что это работает, когда у меня небольшие наборы данных.Но с миллионами строк в моем превосходстве я иногда попадаю в ситуацию, когда

col1.value = 2,99,

col2.value = 3,99,

, то есть diff=1, но diff type установлен на 4more up to 3.

Это математически верно, но не должно ли это остановиться после третьего условия?И есть ли способ достичь того же результата другим способом?

...