Use tuple
s 用于选择MultiIndex
在列中:
df.loc[0, ('foo','a')] = 12.3
print (df)
foo po di
a b c a b c a b c
0 12.3 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN
如果需要更复杂的更新使用slicers http://pandas.pydata.org/pandas-docs/stable/advanced.html#using-slicers:
idx = pd.IndexSlice
df.loc[0, idx['foo', ['b','c']]] = 12.3
print (df)
foo po di
a b c a b c a b c
0 NaN 12.3 12.3 NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN
df.loc[0, idx[:, ['b','c']]] = 12.3
print (df)
foo po di
a b c a b c a b c
0 NaN 12.3 12.3 NaN 12.3 12.3 NaN 12.3 12.3
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN
df.loc[:, idx[['po','di'], 'a']] = 12.3
print (df)
foo po di
a b c a b c a b c
0 NaN NaN NaN 12.3 NaN NaN 12.3 NaN NaN
1 NaN NaN NaN 12.3 NaN NaN 12.3 NaN NaN
2 NaN NaN NaN 12.3 NaN NaN 12.3 NaN NaN
3 NaN NaN NaN 12.3 NaN NaN 12.3 NaN NaN
4 NaN NaN NaN 12.3 NaN NaN 12.3 NaN NaN