Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 VALUEWHEN в разрезе Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

СообщениеДобавлено: Вт Мар 31, 2020 11:26 am Ответить с цитатой Вернуться к началу

Если я не ошибаюсь, то видел на форуме функцию VALUEWHEN написанную циклично. Хочу заглянуть внутрь этой функции, если есть у кого то возможность продублировать, выложите пожалуйста.

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

СообщениеДобавлено: Вт Мар 31, 2020 5:44 pm Ответить с цитатой Вернуться к началу

MrDzenLi писал(а):
Если я не ошибаюсь, то видел на форуме функцию VALUEWHEN написанную циклично. Хочу заглянуть внутрь этой функции, если есть у кого то возможность продублировать, выложите пожалуйста.

Код:
result = valuewhen(condition, array)

который возвращает значение массива , когда условие было True в самом последнем случае:
Код:

import pandas as pd
pd1 = pd.Series([0,0,1,1,0,0,1,0,1,0,0,0,1])
pd2 = pd.Series([1,2,3,4,5,6,7,8,9,10,11,12,13])

def valuewhen(a1, a2):
    res = pd.Series(index=a1.index)
    res.loc[a1 == 1] = a2
    res = res.ffill().fillna(0)
    return res

result = valuewhen(pd1, pd2)

Пример:
Код:

result = valuewhen(array1, array2)

array1  array2  result
     0       1       0
     0       2       0
     1       3       3
     1       4       4
     0       5       4
     0       6       4
     1       7       7
     0       8       7
     1       9       9
     0      10       9
     0      11       9
     0      12       9
     1      13      13

Теперь я хочу вернуть значение массива , когда условие было True в последнем случае n :
Код:

result = ValueWhen(condition, array[, n]) #[if missing n=1]

Пример:
Код:

Result = ValueWhen(array1, array2, 1)
Result2 = ValueWhen(array1, array2, 2)

array1  array2  Result  Result2
     0       1       0        0
     0       2       0        0
     1       3       3        0
     1       4       4        3
     0       5       4        3
     0       6       4        3
     1       7       7        4
     0       8       7        4
     1       9       9        7
     0      10       9        7
     0      11       9        7
     0      12       9        7
     1      13      13        9

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

СообщениеДобавлено: Вт Мар 31, 2020 5:45 pm Ответить с цитатой Вернуться к началу

Похож ?

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Апр 01, 2020 9:10 am Ответить с цитатой Вернуться к началу

Код:

Result = ValueWhen(array1, array2, 1)
Result2 = ValueWhen(array1, array2, 2)

array1  array2  Result  Result2
     0       1       0        0
     0       2       0        0
     1       3       3        0
     1       4       4        3
     0       5       4        3
     0       6       4        3
     1       7       7        4
     0       8       7        4
     1       9       9        7
     0      10       9        7
     0      11       9        7
     0      12       9        7
     1      13      13        9

Вроде правильно.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
MrDzenLi



Зарегистрирован: 20.04.2015
Сообщения: 383
Откуда: VRN

СообщениеДобавлено: Ср Апр 01, 2020 9:53 am Ответить с цитатой Вернуться к началу

000 писал(а):
Код:

Result = ValueWhen(array1, array2, 1)
Result2 = ValueWhen(array1, array2, 2)

array1  array2  Result  Result2
     0       1       0        0
     0       2       0        0
     1       3       3        0
     1       4       4        3
     0       5       4        3
     0       6       4        3
     1       7       7        4
     0       8       7        4
     1       9       9        7
     0      10       9        7
     0      11       9        7
     0      12       9        7
     1      13      13        9

Вроде правильно.

Да, Спасибо. Я разобрал этот вопрос, в Квике тоже есть такая функция, называется GetValue

_________________
Нам не дано знать всего.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen