我有一个简单的表,其中IsReference列定义了指示Pmpp基值的标志,应根据该标志计算按Item分组的所有其他Pmpp值的相对值,如下图所示。类似地,我可以根据参考日期计算日期之间的差异。等。我希望得到一些提示,如何在Python中做到这一点。下面是一个代码,我开始。最好的问候
import pandas as pd
d = {'Item': ["dmc1", "dmc1", "dmc1", "dmc1", "dmc2", "dmc2", "dmc2", "dmc2"],
'Pmpp': [3, 4, 3, 1, 2, 4, 3, 1],
'IsReference': [0, 1, 0, 0, 1, 0, 0, 0],
'TimeStamp': ["22.02.2023", "25.02.2023", "28.02.2023", "3.03.2023", "24.02.2023", "25.02.2023", "2.03.2023", "5.03.2023"]
}
df = pd.DataFrame(data = d)
# find location of reference
ref = df['Pmpp'][df['IsReference'] == 1].values
# calculate relative values
df['Pmpp_norm'] = df.groupby('Item')['Pmpp'].apply(lambda x: x/ref)
2条答案
按热度按时间db2dz4w81#
必须将引用值广播到所有行:
输出:
更新
您还可以使用Mapdict:
输出:
rpppsulh2#
我觉得这应该行得通: