首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas.Series.apply中的访问索引

pandas.Series.apply中的访问索引
EN

Stack Overflow用户
提问于 2013-08-19 14:22:07
回答 7查看 62.8K关注 0票数 84

假设我有一个MultiIndex系列s

代码语言:javascript
运行
复制
>>> s
     values
a b
1 2  0.1 
3 6  0.3
4 4  0.7

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

代码语言:javascript
运行
复制
def f(x):
   # conditions or computations using the indexes
   if x.index[0] and ...: 
   other = sum(x.index) + ...
   return something

对于这样的函数,我如何做s.apply(f)呢?做这种操作的推荐方法是什么?我希望获得一个新的Series,其中包含在每一行和同一个MultiIndex上应用的函数所产生的值。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-08-19 14:52:38

我认为apply没有访问索引的权限;它将每一行视为一个numpy对象,而不是一个Series,如您所见:

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
Series(s.reset_index().apply(f, axis=1).values, index=s.index)

其他方法可能使用s.get_level_values (在我看来常常有点难看),或者使用s.iterrows(),后者可能会慢一些--可能取决于f到底做了什么。

票数 56
EN

Stack Overflow用户

发布于 2013-08-19 15:04:10

让它成为一个框架,如果你想要返回标量(所以结果是一个系列)

设置

代码语言:javascript
运行
复制
In [11]: s = Series([1,2,3],dtype='float64',index=['a','b','c'])

In [12]: s
Out[12]: 
a    1
b    2
c    3
dtype: float64

打印功能

代码语言:javascript
运行
复制
In [13]: def f(x):
    print type(x), x
    return x
   ....: 

In [14]: pd.DataFrame(s).apply(f)
<class 'pandas.core.series.Series'> a    1
b    2
c    3
Name: 0, dtype: float64
<class 'pandas.core.series.Series'> a    1
b    2
c    3
Name: 0, dtype: float64
Out[14]: 
   0
a  1
b  2
c  3

由于您可以在这里返回任何内容,所以只需返回标量(通过name属性访问索引)

代码语言:javascript
运行
复制
In [15]: pd.DataFrame(s).apply(lambda x: 5 if x.name == 'a' else x[0] ,1)
Out[15]: 
a    5
b    2
c    3
dtype: float64
票数 18
EN

Stack Overflow用户

发布于 2017-12-05 03:54:31

转换为DataFrame并沿行应用。您可以以x.name的形式访问索引。x现在也是一个具有1值的Series

代码语言:javascript
运行
复制
s.to_frame(0).apply(f, axis=1)[0]
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18316211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档