gpt4 book ai didi

python - 根据其他列的值在多索引数据框中创建新列的简单方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:42 24 4
gpt4 key购买 nike

我有多索引数据框:

df=pd.DataFrame(np.zeros((2,4)))
df.columns=pd.MultiIndex.from_arrays([['a','a','b','b'],[1,2,1,2]])
df['a']=10
df['b']=20

a b
1 2 1 2
0 10 10 20 20
1 10 10 20 20

我想创建一个新的上层列,它是“a”和“b”的总和,即

想要的结果:

   a       b      c   
1 2 1 2 1 2
0 10 10 20 20 30 30
1 10 10 20 20 30 30

理想情况下我想写一些类似于

的东西
df['c']=df['a']+df['b'] 

但它不适用于多索引数据帧

最佳答案

最简单的是使用stackunstack :

df = df.stack()
df['c']=df['a']+df['b']
df = df.unstack()
print (df)
a b c
1 2 1 2 1 2
0 10 10 20 20 30 30
1 10 10 20 20 30 30

另一种解决方案 addconcat :

df1 = df.a.add(df.b)
#create MultiIndex with c level
df1.columns = [['c'] * len(df1.columns), df1.columns]
print (df1)
c
1 2
0 30 30
1 30 30

df2 = pd.concat([df, df1], axis=1)
print (df2)
a b c
1 2 1 2 1 2
0 10 10 20 20 30 30
1 10 10 20 20 30 30

关于python - 根据其他列的值在多索引数据框中创建新列的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42807709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com