У меня проблемы с фильтрацией на многоиндексном фрейме данных.
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(6, 6),
columns=pd.MultiIndex.from_arrays((['Team_1','Team_1','Team_1','Team_1','Team_1','Team_1'],
['A','A','A','B','B','B'], ['a', 'b', 'c', 'a', 'b', 'c'])))
, который выглядит следующим образом:
Team_1
A B
a b c a b c
0 1.663478 1.121481 -0.675905 -1.286932 -0.713381 0.835101
1 0.076587 1.334063 -1.804435 -0.892450 -0.349493 -1.448643
2 0.485618 0.675481 -0.488584 -0.354583 1.827532 -1.184389
3 -0.531397 -0.145830 -1.143331 -0.871459 -0.009081 -1.741627
4 0.355948 -2.275475 0.543201 -0.099087 -1.114334 -1.248298
5 1.448409 -0.974127 2.004364 -0.880845 1.195134 0.392949
Я хотел бы вывести df
, где a
и b
предъявляют некоторые требования: если оба они верны, включите также столбец c
. Например, вывод данных с разрезами a>0
и b<0
должен выглядеть так:
Team_1
A B
a b c a b c
0 1.663478 NaN NaN NaN -0.713381 NaN
1 0.076587 NaN NaN NaN -0.349493 NaN
2 0.485618 NaN NaN -0.354583 NaN NaN
3 NaN -0.145830 NaN NaN -0.009081 NaN
4 0.355948 -2.275475 0.543201 NaN -1.114334 NaN
5 1.448409 -0.974127 2.004364 NaN NaN NaN
Для начала я могу сделать базовый c selection (df.iloc[:, df.columns.get_level_values(2) == 'a'] > 0)
, но не уверен, откуда go есть.