JavaScript не имеет понятия списка фиксированных параметров. Для ваших собственных функций вы всегда можете указать столько параметров, сколько хотите, и передать их столько, сколько хотите.
Для встроенных функций, которые коррелируют с собственным кодом, это зависит от .
Вы спросили, от чего это зависит:
15 о встроенных (не путать с host ) вообще функциями
Если в описании конкретной функции не указано иное, если для функции или конструктора, описанной в этом разделе, дается меньше аргументов, чем требуется для функции, функция или конструктор должны вести себя точно так, как если бы ей были предоставлены достаточные дополнительные аргументы, каждый из которых был бы неопределенным значением.
blockquote>Хорошо. Если я передаю меньше аргументов, чем необходимо, это зависит от функции самой функции (прокрутите вниз раздел 15, чтобы найти спецификацию для каждой встроенной функции).
Если в описании конкретной функции не указано иначе, если для функции или конструктора, описанной в этом разделе, дается больше аргументов, чем указано для функции, дополнительные аргументы вычисляются по вызову, а затем игнорируются функцией. Однако реализация может определять поведение конкретной реализации, относящееся к таким аргументам, пока поведение не является бросанием исключения TypeError, которое определяется просто наличием дополнительного аргумента.
blockquote>Передача в слишком большом количестве аргументов никогда не следует поднимать TypeError. Но все же это может вызвать другие ошибки. Опять же, это зависит от функции, о которой вы говорите.
Вы говорили прямо о DOM, а не о встроенных функциях. Честно говоря, я не могу найти соответствующие части спецификации. Специфика ECMA намного проще читать, чем веб-сайт w3.
Конечно! Настройка:
>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
'B': [randint(1, 9)*10 for x in xrange(10)],
'C': [randint(1, 9)*100 for x in xrange(10)]})
>>> df
A B C
0 9 40 300
1 9 70 700
2 5 70 900
3 8 80 900
4 7 50 200
5 9 30 900
6 2 80 700
7 2 80 400
8 5 80 300
9 7 70 800
Мы можем применить операции столбца и получить объекты Boolean Series:
>>> df["B"] > 50
0 False
1 True
2 True
3 True
4 False
5 False
6 True
7 True
8 True
9 True
Name: B
>>> (df["B"] > 50) & (df["C"] == 900)
0 False
1 False
2 True
3 True
4 False
5 False
6 False
7 False
8 False
9 False
[Обновить, чтобы перейти к новому стилю .loc
]:
И тогда мы можем использовать их для индексации в объект. Для доступа к чтению вы можете привязывать индексы:
>>> df["A"][(df["B"] > 50) & (df["C"] == 900)]
2 5
3 8
Name: A, dtype: int64
, но вы можете столкнуться с проблемами из-за различий между представлением и копией, выполняющими это для доступа к записи. Вместо этого вы можете использовать .loc
:
>>> df.loc[(df["B"] > 50) & (df["C"] == 900), "A"]
2 5
3 8
Name: A, dtype: int64
>>> df.loc[(df["B"] > 50) & (df["C"] == 900), "A"].values
array([5, 8], dtype=int64)
>>> df.loc[(df["B"] > 50) & (df["C"] == 900), "A"] *= 1000
>>> df
A B C
0 9 40 300
1 9 70 700
2 5000 70 900
3 8000 80 900
4 7 50 200
5 9 30 900
6 2 80 700
7 2 80 400
8 5 80 300
9 7 70 800
Обратите внимание, что я случайно сделал == 900
, а не != 900
или ~(df["C"] == 900)
, но я слишком ленив, чтобы исправить это. Упражнение для читателя. : ^)
Другим решением является использование метода query :
import pandas as pd
from random import randint
df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
'B': [randint(1, 9) * 10 for x in xrange(10)],
'C': [randint(1, 9) * 100 for x in xrange(10)]})
print df
A B C
0 7 20 300
1 7 80 700
2 4 90 100
3 4 30 900
4 7 80 200
5 7 60 800
6 3 80 900
7 9 40 100
8 6 40 100
9 3 10 600
print df.query('B > 50 and C != 900')
A B C
1 7 80 700
2 4 90 100
4 7 80 200
5 7 60 800
Теперь, если вы хотите изменить возвращаемые значения в столбце A, вы можете сохранить их индекс:
my_query_index = df.query('B > 50 & C != 900').index
.... и использовать .iloc
для их изменения, т. е.:
df.iloc[my_query_index, 0] = 5000
print df
A B C
0 7 20 300
1 5000 80 700
2 5000 90 100
3 4 30 900
4 5000 80 200
5 5000 60 800
6 3 80 900
7 9 40 100
8 6 40 100
9 3 10 600
.loc
- было бы хорошо, если бы вы уточнили, где мы получаем копию и где вид. – Gill Bates 20 June 2014 в 18:36