如何在Python中划分多层列

NRVA

我有这样的df:

arrays = [['bar', 'bar', 'baz', 'baz'],
          ['one', 'two', 'one', 'two']]

tuples = list(zip(*arrays))

index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 4), index=['A', 'B', 'C'], columns=index)
df.head()

返回:

在此处输入图片说明

我想添加一些列,其中所有第二级维度都彼此分开-第一个小节被baz一除,第二个小节被baz二除,依此类推。

df[["bar"]]/df[["baz"]]

df[["bar"]].div(df[["baz"]])

返回NaN的

耶斯列尔

您只能选择两个级别[]

df1 = df["bar"]/df["baz"]
print (df1)
second        one        two
A        1.564478  -0.115979
B       14.604267 -19.749265
C       -0.511788  -0.436637

如果要添加MultiIndex添加MultiIndex.from_product

df1.columns = pd.MultiIndex.from_product([['new'], df1.columns], names=df.columns.names)
print (df1)
first         new           
second        one        two
A        1.564478  -0.115979
B       14.604267 -19.749265
C       -0.511788  -0.436637

MultiIndex输出的另一个想法是将您的解决方案与具有rename相同名称的列一起使用,在这里new

df2 = df[["bar"]].rename(columns={'bar':'new'})/df[["baz"]].rename(columns={'baz':'new'})
print (df2)
first         new           
second        one        two
A        1.564478  -0.115979
B       14.604267 -19.749265
C       -0.511788  -0.436637

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章