gpt4 book ai didi

python - R 在 python 中具有函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:41 25 4
gpt4 key购买 nike

R 中,我可以使用 with(obj, a + b + c + d) 而不是 obj$a + obj$b + obj$ c + obj$d,其中 obj 可以是 listdata.frame

python中的dictpandas.Seriespandas.DataFrame有没有类似的函数?

最佳答案

在某种程度上,不。但是有很多类似的替代方案。 R 的with 函数看起来很通用,所以在 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

Pandas 的 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 ,这最接近你所追求的,我认为:

Evaluate an expression in the context of the calling DataFrame instance.

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 - R 在 python 中具有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com