Попробуйте это, если вы хотите, чтобы умножение было основано на каждой уникальной строке (факторизовано), для дублированных элементов списка это вернет дублированные результаты:
df['col2']=df.col1.transform(lambda x: pd.factorize(x)[0]*100)
Или предложение @jezrael:
df.col1.apply(lambda x: np.arange(len(x))*100)
print(df)
col1 \
row1 [0.0, 6.33839991, 3.93961207, 5.27702178, 8.27...
row2 [0.0, 5.93961207, 4.27702178, 4.12702178]
row3 [0.0, 6.44428501, 3.93961207, 8.27702178, 4.27...
col2
row1 [0, 100, 200, 300, 400, 500, 600]
row2 [0, 100, 200, 300]
row3 [0, 100, 200, 300, 400]
Каждая переменная в JavaScript являются именованным атрибутом объекта. Поскольку example:-
var x = 1;
x добавляется к глобальному объекту. Глобальный объект обеспечивается контекстом сценария и может уже иметь ряд атрибутов. Например, в браузере глобальный объект является окном. Эквивалент вышеупомянутой строке в браузере был бы локальные переменные be:-
window.x = 1;
Теперь, что, если мы изменяем этот to:-
function fn()
{
var x = 1;
}
, Когда fn
назван новым объектом, создается, звонил контекст выполнения также называемый объем (я использую эти термины попеременно). x
добавляется как атрибут к этому объекту объема. Следовательно каждый вызов к fn
получит свой собственный экземпляр объекта объема и поэтому свой собственный экземпляр атрибута x, присоединенного к тому объекту объема.
Теперь позволяет, обращают это Внимание further:-
function fnSequence()
{
var x = 1;
return function() { return x++; }
}
var fn1 = fnSequence();
var fn2 = fnSequence();
WScript.Echo(fn1())
WScript.Echo(fn2())
WScript.Echo(fn1())
WScript.Echo(fn2())
WScript.Echo(fn1())
WScript.Echo(fn1())
WScript.Echo(fn2())
WScript.Echo(fn2())
: Замена WScript.Echo
с любыми записями к stdout в Вашем контексте.
последовательность, которую необходимо получить, является:-
1 1 2 2 3 4 3 4
Поэтому, что произошло здесь? Мы имеем fnSequence
, который инициализирует переменную x
к 1 и возвращает анонимную функцию, которая возвратит значение [1 110] и затем увеличит его.
, Когда эта функция сначала выполняется, объект объема создается, и атрибут x
добавляется к тому объекту объема со значением 1. Также созданный в том же объекте выполнения анонимная функция. Каждый функциональный объект будет иметь атрибут объема, который указывает на контекст выполнения, в котором он создается. Это создает то, что, знают как цепочка объема , в который мы приедем позже. Ссылка на эту функцию возвращается [1 112] и хранится в [1 113].
Примечание, которое fn1
теперь указывает на анонимную функцию и что анонимная функция имеет атрибут объема, указывающий на объем, возражают, что все еще имеет x
присоединенный атрибут. Это известно как [1 116], где содержание контекста выполнения все еще достижимо после функции, она была создана для, завершил выполнение.
Теперь эта та же последовательность происходит при присвоении [1 117]. fn2
будет указывать на другую анонимную функцию, которая была создана в другом контексте выполнения, который был, создают, когда fnSequence
был назван этот второй раз.
, Что происходит, когда функция, сохраненная [1 120], выполняется в первый раз? Новый контекст выполнения создается для выполнения анонимной функции. Возвращаемое значение должно быть найдено от идентификатора x
. Объект объема функции осмотрен для x
атрибут, но ни один не найден. Это - то, где цепочка объема входит. Приведение к сбою найти x
в текущем контексте выполнения, JavaScript берет объект, сохраненный объемом функции, приписывает, и ищет x
там. Это находит его, так как объем функций был создан в выполнении [1 125], получает свое значение и увеличивает его. Следовательно 1 производится, и x
в этом объеме увеличен к 2.
Теперь, когда fn2
выполняется, это в конечном счете присоединено к другому контексту выполнения, чей x
атрибут равняется все еще 1. Следовательно выполнение fn2
также результаты в 1.
, Как Вы видите fn1
и fn2
, каждый генерирует их собственную независимую последовательность чисел.
Переменные, не объявленные с var, глобальны в объеме. Функции представляют объем, но отмечают это, если блоки и другие блоки не представляют объем.
я мог также видеть много информации об этом путем поиска с помощью Google объема JavaScript. Это действительно, что я рекомендовал бы. http://www.digital-web.com/articles/scope_in_javascript/
Функции представляют объем. Можно объявить функции в других функциях, таким образом, создав вложенный объем. Внутренний объем может получить доступ к внешнему объему, но внешнее не может получить доступ к внутреннему объему.
Переменные связываются с объемом, с помощью ключевое слово var . Все переменные неявно связываются с объемом верхнего уровня. Таким образом, при исключении ключевого слова var Вы неявно обращаетесь к переменной, связанной с верхним уровнем. В браузере верхний уровень объект окна . Обратите внимание, что окно - это сам переменная, таким образом окно == window.window