使用多重索引设置pandas子数据帧索引

2024-07-05 14:11:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas.DataFrame和一个Multi,比如:

In [298]: pd.DataFrame(index=pd.MultiIndex.from_tuples([['a', 1], ['a', 2], ['b', 1], ['b', 3]]), data={'x': 1})
Out[298]: 
     x
a 1  1
  2  1
b 1  1
  3  1

当我想重新分配一个子数据帧ie(df.loc['a'])时,我得到一个奇怪的输出:

^{pr2}$

这个例子很简单,我显然想重新分配一个更复杂的职位。在

正常吗?如何重新分配用多重索引索引索引的子数据帧?在


Tags: 数据infromdataframepandasdfdataindex
2条回答

您可以使用[[..]](更新数据帧而不是序列):

In [11]: df
Out[11]:
     x
a 1  1
  2  1
b 1  1
  3  1

In [12]: df2 = pd.DataFrame(index=pd.MultiIndex.from_tuples([['a', 1], ['a', 2], ['b', 1], ['b', 3]]), data={'x': 2})

In [13]: df.loc[["a"]] = df2.loc[["a"]]

In [14]: df
Out[14]:
     x
a 1  2
  2  2
b 1  1
  3  1

您可以使用^{}来表示pd.MultiIndex的片

df.loc[pd.IndexSlice['a', :], :] = 2
print df

a 1  2
  2  2
b 1  1
  3  1

其他示例

^{pr2}$

或者

df = pd.DataFrame(index=pd.MultiIndex.from_tuples([['a', 1], ['a', 2], ['b', 1], ['b', 3]]), data={'x': 1})

df.loc[pd.IndexSlice['b', 3], :] = 31415

print df

         x
a 1      1
  2      1
b 1      1
  3  31415

相关问题 更多 >