Python Pandas 中 DataFrame 中的多索引聚合困难?

Difficult aggregation with multi index in DataFrame in Python Pandas?

您好!我有如下所示的 DataFrame:

df = pd.DataFrame({"ID" : ["1", "1", "1", "2", "3"],
                   "ID2" : [10, 11, 10, 13, 14],
                   "ID3" : [1,2,1,4,5],
                   "code" : ["T", "N", "T", "T", np.nan],
                   "count" :[100, 200, 300 ,560,500]})

df.set_index(["ID", "ID2", "ID3"], inplace=True)

我需要将“col1”添加到此数据框,它将包含:
每个多索引的“计数”列的总和,其中“代码”列为“T”

所以我需要如下结果。 1 和 3 中的 400 是因为 300 + 100 = 400 当然没有解决方案“This 3 are multiindex”是为了帮助:)

使用 Series.where for replace count to misisng values if no T in code, then use GroupBy.transform 求和每个 ID 到新列和最后一组 NaNs 如果没有匹配 T:

m = df['code'].eq('T')
df['col1'] = df['count'].where(m).groupby(level=0).transform('sum').where(m)
print (df)
           code  count   col1
ID ID2 ID3                   
1  10  1      T    100  400.0
   11  2      N    200    NaN
   10  1      T    300  400.0
2  13  4      T    560  560.0
3  14  5    NaN    500    NaN