2 回答

TA贡献1827条经验 获得超8个赞
我想将此系列分配给新列C4,仅分配给“ x”第一个索引。
一种方法是从索引级别映射序列。关键方法是pd.Index.get_level_values。然后覆盖到NaN不需要映射的位置。
f['C4'] = df.index.get_level_values(1).map(series.get)
df.loc[df.index.get_level_values(0) != 'x', 'C4'] = np.nan
print(df)
C3 C4
C1 C2
x a 10 100.0
b 11 NaN
y a 12 NaN
b 13 NaN
z a 14 NaN
b 15 NaN
另外,您可以使用numpy.where:
df['C4'] = np.where(df.index.get_level_values(0) == 'x',
df.index.get_level_values(1).map(series.get),
np.nan)

TA贡献1951条经验 获得超3个赞
你可以去pd.IndexSlice即
df.loc[pd.IndexSlice['x',series.index.tolist()],'C4'] = series.values
C3 C4
C1 C2
x a 10 100.0
b 11 NaN
y a 12 NaN
b 13 NaN
z a 14 NaN
b 15 NaN
添加回答
举报