0
我有一個數據幀,我想由子欄以過濾,檢索,他們考慮列a
+ b
只存在非空值,並且c
+ d
。例如:檢索從多級DF非空值的大熊貓,並結合多列
df = pd.DataFrame({('A','a'): [-1,-1,NaN,10,NaN],
('A','b'): [0,1,NaN,3,NaN],
('A','c'): [NaN,NaN,0,NaN,NaN],
('A','d'): [NaN,NaN,2,NaN,NaN],
('B','a'): [NaN,NaN,0,NaN,NaN],
('B','b'): [NaN,NaN,0,NaN,NaN],
('B','c'): [NaN,-10,NaN,10,20],
('B','d'): [NaN,-100,NaN,100,200]
})
#out
A B
a b c d a b c d
0 -1.0 0.0 NaN NaN NaN NaN NaN NaN
1 -1.0 1.0 NaN NaN NaN NaN 2.0 0.0
2 NaN NaN 0.0 2.0 0.0 0.0 NaN NaN
3 10.0 3.0 NaN NaN NaN NaN 10.0 100.0
4 NaN NaN NaN NaN NaN NaN 20.0 200.0
我的想法是A
下搜索具有非空值的列a
+ b
,並c
+ d
和檢索兩列(x
和y
)是有編制的數據。請注意,有些行的列可能只有NaN
(這是的行4
的情況)。在這些情況下,我想有一個NaN
。
我認爲我將能夠開始使用類似
pfilter=prefilesdf.notnull()
colfilter=pfilter.reindex(columns = df.columns, level=0)
out=df.mask(colfilter)
它所需的輸出將是:
A B
x y x y
0 -1.0 0.0 NaN NaN
1 -1.0 1.0 2.0 0.0
2 0.0 2.0 0.0 0.0
3 10.0 3.0 10.0 100.0
4 NaN NaN 20.0 200.0