假设我有一个多索引序列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)
?做这种手术的推荐方法是什么?我希望获得一个新的序列,该序列的值由该函数应用于每一行和同一个多索引得到。
Tags:
我不相信
apply
可以访问索引;它将每一行视为一个numpy对象,而不是一个序列,如您所见:若要绕过此限制,请将索引提升为列,应用函数,然后使用原始索引重新创建一个序列。
其他方法可能会使用
s.get_level_values
,在我看来,这通常会变得有点难看,或者s.iterrows()
,这可能会慢一些——这可能取决于f
到底做了什么。转换为
DataFrame
并沿行应用。您可以作为x.name
访问索引。x
也是一个Series
现在有1个值使其成为一个帧,如果需要,返回标量(因此结果是一个系列)
设置
打印功能
因为您可以在这里返回任何内容,所以只需返回标量(通过
name
属性访问索引)相关问题 更多 >
编程相关推荐