划分2列并创建包含结果的新列

2024-04-26 09:43:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含列的数据框:

User_id PQ_played PQ_offered
 1           5        15
 2          12        75
 3          25        50

我需要把PQ峎玩的游戏除以PQ峈提供的游戏的百分比。到目前为止,我一直在努力:

^{pr2}$

我知道我大错特错了。在


Tags: 数据id游戏百分比pquserplayedpr2
3条回答

我完全同意@mVChr的观点,认为你把需要做的事情复杂化了。如果你只是想增加一个额外的专栏,那么他的反应就恰到好处了。如果您确实需要groupby,值得注意的是,这通常用于聚合,例如sum()count()等。例如,如果您在User_id列中有多个记录具有非唯一值,则可以使用

df['%_PQ_played'] = df['PQ_played'] / df['PQ_offered'] * 100

然后执行聚合。假设你想知道为每个用户提供的游戏的平均游戏数量,你可以这样做

^{pr2}$

这将产生(数字是任意的)

   User_id  %_PQ_played
0        1    52.777778
1        2    29.250000
2        3    65.000000

您可以使用lambda函数

df.groupby('User_id').apply(lambda x: (x['PQ_played']/x['PQ_offered'])*100)\
.reset_index(1, drop = True).reset_index().rename(columns = {0 : '%_PQ_played'})

你得到了

^{pr2}$

这比你想象的要简单得多。在

df['%_PQ_played'] = df['PQ_played'] / df['PQ_offered'] * 100

         PQ_offered  PQ_played  %_PQ_played
User_id                                     
1                15          5     33.333333
2                75         12     16.000000
3                50         25     50.000000

相关问题 更多 >