我将以下df分组,然后尝试更改每个类型总和的US值,但得到nan:
dff=pd.DataFrame({'country':['US','US','UK','UK','FR','FR','ES','ES'],'type':['A','B','C','B','A','C','A','B'],'sales':[100,200,100,100,50,10,20,40]})
grouped=dff.groupby(['country','type'])['sales'].sum()
grouped['US']=dff.loc[dff.country!='US'].groupby('type')['sales'].sum()
print(grouped)
我想得到:
美国A 70
US B 140
通过MultiIndex
创建MultiIndex.from_product
以将系列分配给MultiIndex.from_product
级别:
US
通话时
s = dff.loc[dff.country!='US'].groupby('type')['sales'].sum()
s.index = pd.MultiIndex.from_product([['US'], s.index])
grouped['US'] = s
print (grouped)
country type
ES A 20
B 40
FR A 50
C 10
UK B 100
C 100
US A 70
B 140
Name: sales, dtype: int64
您获得3个值
dff.loc[dff.country != 'US'].groupby('type')['sales'].sum()
但是
type
A 70
B 140
C 110
Name: sales, dtype: int64
只有2个值
grouped["US"]
您可以尝试:
type
A 70
B 140
Name: sales, dtype: int64
dff.loc[dff.country != 'US'].groupby('type')['sales'].sum()[["A", "B"]]