В некотором смысле, нет. Но есть много аналогичных альтернатив. Функция with
R кажется довольно универсальной, поэтому в Python ее нужно заменить в каждом случае.
Вы можете использовать itemgetter()
для простых коллекций:
In [1]: d = dict(a=1, b=2, c=3, d=4)
In [2]: from operator import itemgetter
In [3]: sum(itemgetter('a', 'b', 'c', 'd')(d))
Out[3]: 10
Или attrgetter()
для, опять же просто, объекты:
In [4]: from collections import namedtuple
In [5]: from operator import attrgetter
In [8]: sum(attrgetter('a', 'b', 'c', 'd')(
namedtuple('sdf', 'a b c d')(1, 2, 3, 4)))
Out[8]: 10
панд DataFrame
Поддержим прямого доступа определенных столбцов и применяющим операции над ними. Суммируя это простой пример, так как он имеет функцию как:
In [10]: df = pd.DataFrame({'A': range(10), 'B': range(10), 'C': range(10)})
In [21]: df[['A', 'B']].sum(axis=1) # row sums
Out[21]:
0 0
1 2
2 4
3 6
4 8
5 10
6 12
7 14
8 16
9 18
dtype: int64
Там также DataFrame.eval
, который находится ближе всего к тому, что вы после этого, я думаю:
Оценить выражение в контексте вызывающего экземпляра DataFrame.
In [9]: df.eval('(A + B) ** C')
Out[9]:
0 1
1 2
2 16
3 216
4 4096
5 100000
6 2985984
7 105413504
8 4294967296
9 198359290368
dtype: int64
Кажется нет подобной функции в Python и большинство других языков программирования. (Http://stackoverflow.com/a/6061156/3054161) – su79eu7k