如何将列的值除以/乘以pandas中另一列的值?

时间:2016-03-05 18:44:11

标签: python pandas

我的数据框看起来很喜欢这个

Minutes Played, Points, Assists

      MP   PTS   TRB   AST    FG%  BLK    3P%
0   2810   793   678   117  0.485   74  0.315
1    263   101    30    19  0.402    7  0.385
2   4241  1170  1178   144  0.548  201  0.000

我想将这些数据框转换为带有这些列的数据框

Points/Minutes, Assists/Minutes

基本上第一列是总分钟,我想要将所有剩余的统计数据转换为每分钟。

我正在做的事

 input_data['PTS']/input_data['MP']

然后我连接所有系列,这是什么pythonic方式?我怎么能用Map / lambda操作呢?

3 个答案:

答案 0 :(得分:1)

您可以使用的IIUC:

>>> a
[{'Type': 'A', 'Name': 'Sam'}, {'Type': 'A', 'Name': 'Apple'}, {'Type': 'B', 'Name': 'Sam'}, {'Type': 'C', 'Name': 'Apple'}, {'Type': 'C'}]
>>> b = [x for x in a if x['Type']=='A']
>>> b
[{'Type': 'A', 'Name': 'Sam'}, {'Type': 'A', 'Name': 'Apple'}]

答案 1 :(得分:1)

除了第一列之外的第一列中的所有列。

df.iloc[:, ].apply(lambda s: s / df.iloc[:, 0])
        PTS       TRB       AST       FG%       BLK       3P%
0  0.282206  0.241281  0.041637  0.000173  0.026335  0.000112
1  0.384030  0.114068  0.072243  0.001529  0.026616  0.001464
2  0.275878  0.277765  0.033954  0.000129  0.047394  0.000000

这也有效:

df.iloc[:, 1:].div(df.iloc[:, 0].values, axis=0)

我相信您需要重新计算您的FG%和3P%列。这将对原始数据帧进行除法,使MP,FG%和3P%保持不变。

df.iloc[:, [1, 2, 3, 5]] = df.iloc[:, [1, 2, 3, 5]].div(df.iloc[:, 0].values, axis=0)

>>> df
     MP       PTS       TRB       AST    FG%       BLK    3P%
0  2810  0.282206  0.241281  0.041637  0.485  0.026335  0.315
1   263  0.384030  0.114068  0.072243  0.402  0.026616  0.385
2  4241  0.275878  0.277765  0.033954  0.548  0.047394  0.000

P.S。去勇士队!!!

答案 2 :(得分:0)

不,连接新系列很有道理。

您还可以使用df['newcol'] = ...来构建您想要的内容。