Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 规范化数据帧中的值_Python_Python 3.x_Pandas_Dataframe_Ipython Notebook - Fatal编程技术网

Python 规范化数据帧中的值

Python 规范化数据帧中的值,python,python-3.x,pandas,dataframe,ipython-notebook,Python,Python 3.x,Pandas,Dataframe,Ipython Notebook,我需要的是通过以下过程规范化下面的评级列: 按用户字段id分组 查找每个用户的平均评分 找到每个用户的评论提示并减去用户的平均评分 我有这个数据框: user rating review_id a 1 5 b 2 3 c 1 3 d 1 4 e

我需要的是通过以下过程规范化下面的评级列:

  • 按用户字段id分组
  • 查找每个用户的平均评分
  • 找到每个用户的评论提示并减去用户的平均评分
  • 我有这个数据框:

                    user       rating
     review_id
             a      1          5
             b      2          3
             c      1          3
             d      1          4
             e      3          4
             f      2          2
    ...
    
    然后,我计算每个用户的平均值:

     >>>data.groupby('user').rating.mean()
    
     user
     1       4
     2       2.5
     3       4
    
    我需要的最终结果是:

                    user       rating
     review_id
             a      1          1
             b      2          0.5
             c      1          -1
             d      1          0
             e      3          0
             f      2          -0.5
    ...
    

    数据帧如何有效地提供这种功能?

    您可以使用
    groupby().transform()来实现这一点,请参阅

    在这种情况下,按
    'user'
    进行分组,然后为每个组减去该组的平均值(您提供给
    transform
    的函数应用于每个组,但结果保留原始索引):


    您确定分级列中的值是数字吗?请尝试
    data['rating']=data.rating.astype('int')
    ,然后运行您的groupby。@Alexander yeap就是这样。@BinaryStore对此持保留态度,因为我是熊猫的新手。我认为你发布的这个线程用一个静态值规范化了每一行,所以我想我需要一种不同类型的规范化。我删除了我的评论,但结果是没有办法收回旗帜。
    In [7]: data.groupby('user').transform(lambda x: x - x.mean())
    Out[7]:
               rating
    review_id
    a             1.0
    b             0.5
    c            -1.0
    d             0.0
    e             0.0
    f            -0.5