Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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_Pandas Groupby - Fatal编程技术网

Python 按标识符分组,并将组中的每个指标除以第一行中的值

Python 按标识符分组,并将组中的每个指标除以第一行中的值,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,以以下为例: import pandas as pd import numpy as np d = {'Group': [1,1,1,2,2,2], 'P': [100,101,96,200,204,208], 'PL': [99,100,94, 199,203,207]} df = pd.DataFrame(d) df Group P PL 0 1 100 99 1 1 101 100 2 1 96 94 3 2

以以下为例:

import pandas as pd
import numpy as np

d = {'Group': [1,1,1,2,2,2], 'P': [100,101,96,200,204,208], 'PL': [99,100,94, 199,203,207]}
df = pd.DataFrame(d)
df

    Group   P   PL
0   1      100  99
1   1      101  100
2   1      96   94
3   2      200  199
4   2      204  203
5   2      208  207
对于'group'列中的每个组,我想用'PL'列中的每个元素除以'p'列中的第一个元素。这些值将存储在新列中

所需的输出如下所示:

    Group   P    PL   Division
0   1       100  99   0.99
1   1       101  100  1
2   1       96   94   0.94
3   2       200  199  0.995
4   2       204  203  1.015
5   2       208  207  1.035
与每个组的值一起使用,并除以:

关于
地图的另一个想法是:

s = df.drop_duplicates('Group').set_index('Group')['P']
df['Division'] = df['PL'].div(df['Group'].map(s)

字符串
“first”
如何连接到
GroupBy.first
?您可以使用GroupBy对象中的任何方法吗?@SyntaxError-是的,您可以使用if聚合数据中的任何函数。对于非聚合函数,如
cumsum
,则无需使用
df.groupby('Group')['P'].cumsum()
s = df.drop_duplicates('Group').set_index('Group')['P']
df['Division'] = df['PL'].div(df['Group'].map(s)