我有一个包含以下列的数据框:
User_id PQ TGGS PAG Games_played118399 8.536585 7.079646 10.204082 7.711443212651 75.000000 73.684211 75.000000 46.534653210314 60.000000 9.523810 33.333333 14.414414
这些列实际上是游戏代码。我想根据用户玩过的游戏百分比来推荐游戏。在我的数据集中,用户212651玩PQ游戏的时间占75%,玩TGGS游戏的时间占73%。所以如果他玩PQ,他很可能会玩TGGS。这些值变化很大。因此,我设定的参数是50%。所以对于一个用户,如果某个游戏与另一个游戏的相关性达到50%,我想发送一封电子邮件,告知他下一个游戏是TGGS,因为这两个值高度相关。
我希望保持值之间的相关性为50%。所以我编写的代码是
for i, num in new_df['PQ'].iteritems(): if num > new_df['TGGS'] * .5: print User_id[num] print new_df['TGGS']
我在第二行遇到了语法错误。
1467 "indexers [{key}] of {kind}".format( 1468 form=form, klass=type(self), key=key,-> 1469 kind=type(key))) 1470 1471 def get_duplicates(self):TypeError: cannot do label indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [8.536585365853659] of <class 'numpy.float64'>
有人能给我一个好的解决方案吗?
最终目标是得到一个包含user_id的数据框,如果PQ与TGGS相关为True,与PAG相关为True。这样我就可以给那个特定的用户发送电子邮件
回答:
你可以选择数据框中你需要的项目,方法如下:
df[df['PQ'] > (df['TGGs'] * 0.5)]