如何在特定级别对 pandas 中的 MultiIndexed 列进行操作?
How can I operate with MultiIndexed columns in pandas in specific levels?
在pandas中使用简单的列,您可以非常直接地对列进行操作。例如,如果您有一个 DataFrame df,其中包含数字列 A 和 B,您可以计算:
df['C']=df['A']+df['B']
使用MultiIndex列,同样可以,只要对MultiIndex的各级进行操作即可。例如,如果您的 DataFrame 的列是 (A,X), (A,Y), (B, X),(B,Y),可以写成
df[('C','X')]=df[('A','X')]+df[('B','X')]
并且生成的 DataFrame 将有一个额外的列,(C,X) 等于 df[A,X]+df[B,X]
.
在特定级别执行此操作的最直接方法是什么?更具体地说,我正在寻找类似
的东西
df['C']=df['B']+df['A']
,创建两列 (C,X) 和 (C,Y),它们等于 df[A,X]+df[B,X]
和 df[A,Y]+df[B,Y]
,但这是一个 ValueError。
我们可以reshape
数据框来简化操作:
df.stack().eval('C = A + B').unstack()
或者,您可以使用 concat
附加额外级别 C
:
df.join(pd.concat({'C': df['A'] + df['B']}, axis=1))
A B C
X Y X Y X Y
0 9 4 8 2 17 6
1 3 7 0 8 3 15
2 2 7 0 7 2 14
3 3 8 4 8 7 16
4 8 2 3 6 11 8
在pandas中使用简单的列,您可以非常直接地对列进行操作。例如,如果您有一个 DataFrame df,其中包含数字列 A 和 B,您可以计算:
df['C']=df['A']+df['B']
使用MultiIndex列,同样可以,只要对MultiIndex的各级进行操作即可。例如,如果您的 DataFrame 的列是 (A,X), (A,Y), (B, X),(B,Y),可以写成
df[('C','X')]=df[('A','X')]+df[('B','X')]
并且生成的 DataFrame 将有一个额外的列,(C,X) 等于 df[A,X]+df[B,X]
.
在特定级别执行此操作的最直接方法是什么?更具体地说,我正在寻找类似
的东西df['C']=df['B']+df['A']
,创建两列 (C,X) 和 (C,Y),它们等于 df[A,X]+df[B,X]
和 df[A,Y]+df[B,Y]
,但这是一个 ValueError。
我们可以reshape
数据框来简化操作:
df.stack().eval('C = A + B').unstack()
或者,您可以使用 concat
附加额外级别 C
:
df.join(pd.concat({'C': df['A'] + df['B']}, axis=1))
A B C
X Y X Y X Y
0 9 4 8 2 17 6
1 3 7 0 8 3 15
2 2 7 0 7 2 14
3 3 8 4 8 7 16
4 8 2 3 6 11 8