这是我的代码
import pandas as pd
x = pd.DataFrame.from_dict({'A':[1,2,3,4,5,6], 'B':[10, 20, 30, 44, 48, 81]})
a = x['A'].apply(lambda t: t%2==0) # works
c = x.index.apply(lambda t: t%2==0) # error
如何使该代码以最简单的方式工作?我知道如何reset_index()
然后将其视为一列,但是我很好奇是否有可能像对待常规列一样对索引进行操作。
答案 0 :(得分:2)
您必须使用to_series
将Index
转换为Series
:
c = x.index.to_series().apply(lambda t: t%2==0)
如果您要调用apply
是因为Index
对象没有apply
方法
索引的方法和操作数量有限:http://pandas.pydata.org/pandas-docs/stable/api.html#modifying-and-computations
答案 1 :(得分:2)
Pandas尚未实现pd.Index.apply
。对于简单的计算,您可以使用基础的NumPy数组:
c = x.index.values % 2 == 0
与基于lambda
的解决方案不同,这利用了矢量化操作的优势。
答案 2 :(得分:1)
熊猫索引具有map方法:
c = x.index.map(lambda t: t%2==0) # Index([True, False, True, False, True, False], dtype='object')
请注意,这将返回索引,而不是熊猫系列。