Ваше понимание верно. Он удаляет выбросы и заменяет их на NaN:
np.random.seed(0)
df = pd.DataFrame(np.random.normal(0,1,(100,10)))
idx = np.abs(df - df.mean()) <= (3*df.std())
outlier_locations = np.where(idx == False)
df1 = df[idx]
print(outlier_locations)
(array([58]), array([9]))
Если вы ожидаете, что df1 будет содержать меньше записей, чем df, то, возможно, вы хотите удалить строки или столбцы, содержащие выбросы, или просто удалить запись в строке, так что вы останетесь с рваными массивами.
Рекомендуемый путь посредством управления DOM, но это может быть довольно подробным. Например:
// <p>Hello, <b>World</b>!</p>
var para = document.createElement('p');
para.appendChild(document.createTextNode('Hello, '));
// <b>
var b = document.createElement('b');
b.appendChild(document.createTextNode('World');
para.appendChild(b);
para.appendChild(document.createTextNode('!'));
// Do something with the para element, add it to the document, etc.
Править
В ответ на Ваше редактирование, для замены текущего содержания, Вы просто удаляете существующее содержание, затем используете код выше для заполнения нового содержания. Например:
var someDiv = document.getElementById('someID');
var children = someDiv.childNodes;
for(var i = 0; i < children.length; i++)
someDiv.removeChild(children[i]);
Но поскольку кто-то еще сказал, я рекомендую использовать что-то как jQuery вместо этого, как не, все браузеры полностью поддерживают DOM и тех, которые действительно имеют причуды, с которыми имеют дело внутренне библиотеки JavaScript. Например, jQuery выглядит примерно так:
$('#someID').html("<p>Hello, <b>World</b>!</p>");
Лучший способ сделать его состоит в том, чтобы использовать document.createTextNode
. Одна из главных причин для использования этой функции вместо innerHTML
тот весь выход символа HTML, будет заботиться о для Вас, тогда как необходимо было бы выйти строки сами, если бы Вы просто устанавливали innerHTML
.
Можно получить тот же эффект путем управления DOM. Самый безопасный способ изменить текст состоит в том, чтобы удалить все дочерние узлы элемента и заменить их новым текстовым узлом.
var node = document.getElementById("one");
while( node.firstChild )
node.removeChild( node.firstChild );
node.appendChild( document.createTextNode("Two") );
Удаление дочерних узлов избавляется от текстового содержания Вашего элемента прежде, чем заменить его новым текстом.
Причина большинство разработчиков избегает использования innerHTML, состоит в том, что доступ к элементам через DOM является совместимыми стандартами.
Если Вы только хотите изменить простой текст, то существует более быстрое решение, которое полагается на стандарты:
document.getElementById("one").firstChild.data = "two";
Так или иначе обратите внимание на то, что innerHTML будет частью предстоящего стандарта HTML 5.
var who=document.getElementById('one'), txt='new text';
if(who.innerText) who.innerText=txt;
else if(who.textContent) who.textContent= txt;
Это может быть столь же нежелательно как innerHTML Вам, но это имеет преимущество работы в некоторых случаях (IE), где innerHTML или appendChild не делают, как некоторые узлы таблицы, текст стиля и элементов сценария и значения полей формы
Вы могли использовать DOM следующим образом:
<html>
<body>
<div>before</div>
<script type="text/javascript">
var element = document.getElementsByTagName("div")[0];
alert(element.firstChild.nodeValue);
element.removeChild(element.firstChild);
element.appendChild(document.createTextNode('after'));
alert(element.firstChild.nodeValue);
</script>
</body>
Но я думаю, что любой редко делает это, но использует платформу как jQuery или Прототип или любую другую платформу JavaScript там вместо этого. Это - пример jQuery:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
</head>
<body>
<div>before</div>
<script type="text/javascript">
var element = $("div");
alert(element.text());
element.text("after");
alert(element.text());
</script>
</body>
Мне кажется, что комбинация CSS + HTML + JS должна достичь желаемых результатов:
.myelement:before {
content: attr(alt);
}
...
<span class='myelement' alt='initial value'></span>
...
element.setAttribute('alt', 'new value');
Кто-нибудь знает, работает ли это на практике?