Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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_Pandas - Fatal编程技术网

Python 如何将一列的值与另一列的值相除/相乘?

Python 如何将一列的值与另一列的值相除/相乘?,python,pandas,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 我想用这些列将该数据帧转换为数据帧 Po

我的数据框看起来像这样

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

然后我连接所有的系列,什么是蟒蛇式的方法?如何使用Map/lambda操作来实现这一点?

不,连接新系列非常惯用


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

不,连接新系列非常惯用

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

IIUC您可以使用:

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

input_data['A'] = input_data['PTS']/input_data['MP']
input_data['B'] = input_data['AST']/input_data['MP']
print input_data
     MP   PTS   TRB  AST    FG%  BLK    3P%         A         B
0  2810   793   678  117  0.485   74  0.315  0.282206  0.041637
1   263   101    30   19  0.402    7  0.385  0.384030  0.072243
2  4241  1170  1178  144  0.548  201  0.000  0.275878  0.033954

print pd.DataFrame({'A': input_data['A'],'B': input_data['B']}, index=input_data.index)
          A         B
0  0.282206  0.041637
1  0.384030  0.072243
2  0.275878  0.033954
IIUC您可以使用:

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

input_data['A'] = input_data['PTS']/input_data['MP']
input_data['B'] = input_data['AST']/input_data['MP']
print input_data
     MP   PTS   TRB  AST    FG%  BLK    3P%         A         B
0  2810   793   678  117  0.485   74  0.315  0.282206  0.041637
1   263   101    30   19  0.402    7  0.385  0.384030  0.072243
2  4241  1170  1178  144  0.548  201  0.000  0.275878  0.033954

print pd.DataFrame({'A': input_data['A'],'B': input_data['B']}, index=input_data.index)
          A         B
0  0.282206  0.041637
1  0.384030  0.072243
2  0.275878  0.033954

将数据帧中除第一列以外的所有列除以第一列

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、 美国勇士队

将数据帧中除第一列以外的所有列除以第一列

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、 美国勇士队

您好@Dude,您能提供一个示例输入,帮助我们帮助您,并了解您到底在做什么吗?您的帖子中有不一致的列名称。最好让一个具体的SSCCE@zmo用实际的数据帧更新问题。您能提供初始化示例数据帧的最简单/规范的代码片段,以及如何使用它,以及在哪里/如何被卡住?另外,是否要将
点/分钟
连接起来,或创建一个新值与计算
点/分钟
的实际结果?i、 e.您是想将
793/2810
存储为字符串,还是想计算并存储
0.28…
?@zmo再次更新了问题以进一步澄清,我想要一个带有每分钟统计数据的新数据框,并且我想将其存储在与先前相同的数据类型中,即float。您好@Dude,您能提供一个示例输入,为了帮助我们帮助您,并了解您到底在做什么?您的帖子中有不一致的列名称。最好让一个具体的SSCCE@zmo用实际的数据帧更新问题。您能提供初始化示例数据帧的最简单/规范的代码片段,以及如何使用它,以及在哪里/如何被卡住?另外,是否要将
点/分钟
连接起来,或创建一个新值与计算
点/分钟
的实际结果?i、 e.您是想将
793/2810
存储为字符串,还是想计算并存储
0.28…
?@zmo再次更新了该问题以进一步澄清,我想要一个新的数据框,其中包含每分钟统计数据,我想将其存储在与前面相同的数据类型中,即float。你能告诉我实现这一点的map/lamdba命令是什么吗?你能告诉我实现这一点的map/lamdba命令是什么吗?谢谢你的回答,这里index=input_data.index的作用是什么?这意味着您在新的
dataframe
中重复使用原始
dataframe
index
谢谢您的回答,这里index=input_data.index的作用是什么?这意味着您在新的
dataframe
中重复使用原始
dataframe
索引是的,我不应该规范化这两列。我可以通过索引处理它们。请解释一下lambda s:s/df.iloc[:,0]
part好吗?它在数据帧的每列(系列)上执行lambda函数。因此,
s
是序列列,
df.iloc[:,0]
是第一列<代码>iloc是整数索引
[:,0]
意味着从第一列获取所有行(使用基于零的索引)。是的,我不应该规范化这两列。我可以通过索引处理它们。请解释一下lambda s:s/df.iloc[:,0]part好吗?它在数据帧的每列(系列)上执行lambda函数。因此,
s
是序列列,
df.iloc[:,0]
是第一列<代码>iloc是整数索引
[:,0]
表示从第一列获取所有行(使用基于零的索引)。