在多索引中创建新列

我有一个简单的数据框架。

     A       B
     1   2   1   2
Foo  100 200 300 400
Bar  100 200 300 400

我想添加一个新的列,就是(B,2) – (A,2)

我试过的是:df[“Chg”, “Period”]=[df.loc[:,[(“B”,2)]] 。- df.loc[:, [(“A”, 2)]]]

但我被告知,。

值的长度与索引的长度不一致

我有点困惑–我以为通过为我的新列设置两个列头就可以了,但我现在很苦恼。任何帮助将是非常感激

谢谢你

解决方案:

使用元组进行选择 MultiIndex 和新的MultiIndex列。

df[("Chg","Period")]  = df[("B",2)] - df[("A", 2)]

print (df)
       A         B         Chg
       1    2    1    2 Period
Foo  100  200  300  400    200
Bar  100  200  300  400    200

如果想让多个列一起工作,例如减去 BA 可以使用新的MultiIndex级别 DataFrame.xs,然后通过以下方式创建MultiIndex MultiIndex.from_product 补足 DataFrame.join:

df1 = df.xs('B', axis=1, level=0) - df.xs('A', axis=1, level=0)
df1.columns = pd.MultiIndex.from_product([['Diff'], df1.columns])
print (df1)
    Diff     
       1    2
Foo  200  200
Bar  200  200

df = df.join(df1)
print (df)
       A         B      Diff     
       1    2    1    2    1    2
Foo  100  200  300  400  200  200
Bar  100  200  300  400  200  200

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在WPF中,有没有办法在后面的代码中获取故事板动画值的当前值?

2022-4-20 13:08:42

解决方案

SQL条件列和合并两行。

2022-4-20 13:08:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索