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)