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
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