向pandas df添加多个列(多级列)

时间:2018-02-09 01:58:33

标签: python pandas multi-level

嗨我有一个带有多级列的pandas df:

sample = pd.DataFrame(pd.np.random.randn(10,2),columns=['a','b'])
df = pd.concat([samp], keys=['p4'],axis=1)
df

输出

    p4
    a           b
0   0.621016    0.920448
1   0.329792    -0.674688

我知道我可以像这样添加一个列c:

df[('p4','c')] =df.p4.a - df.p4.b
df

输出:

    p4
    a            b           c
0   0.621016    0.920448    -0.299432

添加了列' c'将正确的值提升到我想要的水平。

我的问题是如何在不输入列的情况下将大量这些列添加到大型数据框中?例如,我有专栏(p5,[' a',' b'] ...(p6,[' a',' b&#39 ;])我正在考虑for循环或列表理解,但我正在努力弄清楚如何添加大量的计算列' c'

2 个答案:

答案 0 :(得分:2)

在我看来,循环是最易读和可维护的方式。例如:

for i in range(4, 11):
    df[('p'+str(i), 'c')] = df[('p'+str(i), 'a')] - df[('p'+str(i), 'b')]

答案 1 :(得分:0)

我正在使用MultiIndex

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p class="darkmodetext" id="darkModeIcon">Darkmode <span id="darkModeOn">ON</span><span>/</span><span id="darkModeOff">OFF</span></p>