帮助获取对应的数据框值

数据挖掘 Python 熊猫 数据 数据框
2022-03-13 15:44:51

我有两个数据框:

self.thisSession_df:
    id   exerciseId  sets
    1       1         12  
    2       1         14
    2       2         15
    2       2         15

self.exercises_df:
    id   exerciseName
    1      Squat        
    2      Pullup

我想找到一种方法将exerciseIdin替换为self.thisSession_df来自的相应名称self.exercises_df

希望的结果:

self.thisSession_df:
    id   exerciseId    sets
    1       Squat       12  
    2       Squat       14
    2       Pullup      15
    2       Pullup      15

我尝试了一个在这里找到的解决方案,并对其进行了修改以提出: self.thisSession_df['exerciseId'] = self.thisSession_df['exerciseId'].map(df1.set_index('id')['exerciseName'])

这给了我错误:string indices must be integers

我将不胜感激朝着正确的方向轻推!

1个回答

我建议合并您的两个数据框以获取练习名称:

exercise_name_df = thisSession_df.merge(exercises_df, left_on='exerciseId', right_on='id')

这会给你一个像

exercise_name_df:
    id   exerciseId  sets  exerciseName
    1       1         12      Squat
    2       1         14      Squat
    2       2         15     Pullup
    2       2         15     Pullup

然后exerciseId,如果您真的想要,可以用名称替换:

# reassign id to name
exercise_name_df['exerciseId'] = exercise_name_df['exerciseName']
# drop redundant column
exercise_name_df.drop(columns=['exerciseName'], inplace=True)

我认为上述方法比map()解决方案更具可读性。但我认为该map()解决方案也应该稍作调整:

thisSession_df['exerciseId'] = thisSession_df['exerciseId'].map(exercises_df.set_index('id')['exerciseName'])