数据 每个ID多行
ID Value1 Value2
1 1 0
1 0 1
1 3 1
期望的输出
对于每个ID,SUM(Value1)-SUM(Value2)。
在这种情况下,对于ID1,它将是4-2 = 2.
我希望将结果放回原始表中,如下所示
ID Value1 Value2 Calculated_Value
1 1 0 2
1 0 1 2
1 3 1 2
我试过这个..但是我跑了但是我在输出表中得到了NaN ..
df['Calculated_Value']= df.groupby(['ID'])['Value1'].sum()-df.groupby(['ID'])['Value2'].sum()
答案 0 :(得分:1)
groupby
操作的结果以及groupby
操作之间的差异为pd.Series
,其中索引由石斑鱼列定义,在本例中为ID
。
因此,使用pd.Series.map
和ID
来提取分组结果。
df['Calculated_Value'] = df['ID'].map(df.groupby('ID')['Value1'].sum() - \
df.groupby('ID')['Value2'].sum())
答案 1 :(得分:1)
你需要在两个帧之间有类似的索引,当你在第二个组中分组时,你创建索引为ID
# Set the index first
df.set_index('ID', inplace=True)
# Now when we calculate, we can 'left join' onto the correct index values
df['Calculated_Value'] = df.groupby(['ID'])['Value1'].sum()-df.groupby(['ID'])['Value2'].sum()