我有这个数据帧,想创建各种其他数据帧,这些数据帧由Column State和其他列组成,这些列的减法将与减法结果和级别0列名一起进行。数据帧:
|状态|第1张|第2张|第3张|||计数|c|d|计数|c | d||:--------|:--------:|---|--:|:--------:|::::|:---------:||x | 100 | 23 | 34 | 50 | 4 | 56||:--------|:--------:|---|--:|:--------:|::::|:---------:||y | 300 | 13 | 34 | 60 | 41 | 32||:--------|:------:|---|--:|:-----:|:--:|:---------:|
所需的数据帧为:
|状态|Sheet1|Sheet2|差异|||计数|计数|||:--------|:--------:|--------:|:---------------:||x | 100 | 50 | 50||:--------|:--------:|--------:|:---------------:||y | 300 | 60 | 240||:--------|:--------:|--------:|:---------------:|
依此类推。
因此,要首先选择您想要的列,我们可以通过以下方式使用get_level_values
:
>> df = df.iloc[:, (df.columns.get_level_values(0) == "State") | (df.columns.get_level_values(1) == "count")]
>> df
State Sheet1 Sheet2
NaN count count
0 x 100 50
1 y 300 60
我们选择级别0等于"State"
或级别1等于"count"
的所有列。现在,您想要创建一个("Difference", None)
列(没有级别1(。我们可以通过选择列并使用适当的格式来指定我们正在创建的列来实现这一点:
>> df[("Difference", None)] = df[("Sheet1", "count")] - df[("Sheet2", "count")]
>> df
State Sheet1 Sheet2 Difference
NaN count count NaN
0 x 100 50 50
1 y 300 60 240