У меня есть фрейм данных с номерами в первом и втором столбцах:
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
.
Это математически верно, но не должно ли это остановиться после третьего условия?И есть ли способ достичь того же результата другим способом?