【问题标题】:Pandas - apply transformation on index of DataFramePandas - 对 DataFrame 的索引应用转换
【发布时间】:2018-12-24 04:11:44
【问题描述】:

这是我的代码

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(),然后将其视为一列,但我很好奇是否可以对索引进行操作,就好像它是一个常规列一样。

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

您必须使用to_seriesIndex 转换为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

【讨论】:

    【解决方案2】:

    Pandas 尚未实现 pd.Index.apply。对于简单的计算,您可以使用底层 NumPy 数组:

    c = x.index.values % 2 == 0
    

    与基于lambda 的解决方案相反,这利用了矢量化操作。

    【讨论】:

      【解决方案3】:

      Pandas 索引有一个map 方法:

      c = x.index.map(lambda t: t%2==0)   # Index([True, False, True, False, True, False], dtype='object')
      

      请注意,这将返回一个索引,而不是熊猫系列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 2017-12-27
        • 1970-01-01
        • 2016-09-12
        相关资源
        最近更新 更多