gpt4 book ai didi

python - pandas.Series.apply 中的访问索引

转载 作者:IT老高 更新时间:2023-10-28 20:33:23 26 4
gpt4 key购买 nike

假设我有一个 MultiIndex 系列s:

>>> s
values
a b
1 2 0.1
3 6 0.3
4 4 0.7

我想应用一个使用行索引的函数:

def f(x):
# conditions or computations using the indexes
if x.index[0] and ...:
other = sum(x.index) + ...
return something

我怎样才能为这样的功能做 s.apply(f) ?进行这种操作的推荐方法是什么?我希望获得一个新的系列,该系列的值应用在每一行和相同的 MultiIndex 上。

最佳答案

我不相信 apply 可以访问索引;如您所见,它将每一行视为一个 numpy 对象,而不是一个系列:

In [27]: s.apply(lambda x: type(x))
Out[27]:
a b
1 2 <type 'numpy.float64'>
3 6 <type 'numpy.float64'>
4 4 <type 'numpy.float64'>

要解决此限制,请将索引提升到列,应用您的函数,并使用原始索引重新创建一个系列。

Series(s.reset_index().apply(f, axis=1).values, index=s.index)

其他方法可能会使用 s.get_level_values,在我看来这通常会有点难看,或者使用 s.iterrows(),这可能会更慢——也许取决于 f 的确切作用。

关于python - pandas.Series.apply 中的访问索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316211/

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