小编wha*_*ada的帖子

多索引数据框中列之间的数学运算

我有一个具有列multiindex的数据框,需要切片并在切片之间执行数学运算。

# sample df
idx=pd.IndexSlice
np.random.seed(123)
tuples = list(zip(*[['one', 'one', 'two', 'two', 'three', 'three'],['foo', 'bar', 'foo', 'bar', 'foo', 'bar']]))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 6), index=['A', 'B', 'C'], columns=index)
Run Code Online (Sandbox Code Playgroud)

如果我想在各个列之间执行加/减运算,则可以使用索引切片并按如下方式进行:

df.loc[:,idx['three','foo']] - df.loc[:,idx['two','foo']]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想使用更高级别的切片,它将无法正常工作并返回NaN:

# not working
df.loc[:,idx['three',:]] - df.loc[:,idx['two',:]]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用df的更高级别的切片并仅添加/减去相应的列?我的数据框可能在multiindex中包含数百列。谢谢

python dataframe pandas

4
推荐指数
1
解决办法
175
查看次数

标签 统计

dataframe ×1

pandas ×1

python ×1