【问题标题】:AttributeError: 'int' object has no attribute 'map'AttributeError:“int”对象没有属性“map”
【发布时间】:2026-01-21 00:15:02
【问题描述】:

我有一个如下定义的函数:

def season_map(x):
    return x.map({1:'spring',2:'summer',3:'fall',4:'winter'})

现在在仅包含值 1、2、3 或 4 的季节列上调用函数:

bike_data['season'] = bike_data['season'].apply(season_map)

给出的错误是: AttributeError: 'int' 对象没有属性 'map'

但如果我尝试:

bike_data['season'] = bike_data['season'].map({1:'spring',2:'summer',3:'fall',4:'winter'})

效果很好!

除了语法之外,无法理解这两种方法有什么区别......

【问题讨论】:

    标签: python pandas function dataframe


    【解决方案1】:

    我的第一个答案/帖子。 我今天正在解决这个问题。 答案是您需要将特定列作为列表传递:

        def season_map(x):
            return x.map({1:'spring',2:'summer',3:'fall',4:'winter'})
        bike_data[['season']] = bike_data[['season']].apply(season_map)
    

    【讨论】:

    • 工作就像一个魅力:)
    【解决方案2】:

    map 函数获取整数,但也有一个映射。可能只是复制粘贴错误。

    试试

    def season_map(x):
        return {1:'spring', 2:'summer', 3:'fall', 4:'winter'}[x]
    

    或者更简单

    season_map = {1:'spring', 2:'summer', 3:'fall', 4:'winter'}
    bike_data['season'] = bike_data['season'].map(season_map)
    

    【讨论】:

      最近更新 更多