我在熊猫中使用多索引。
示例1:
'info' '2002' '2003' '2004'
'PID' 'Age' 't1' 't2' 't1' 't2' 't1' 't2'
101 30 Nan 2 2 1 Nan Nan
102 28 2 5 1 Nan 10 100
我想知道其中一件值得拥有的东西。
[num]和[num]为True
[Nan]和[num]为True
[Nan]和[Nan]是错误的
Example2:
'info'
'PID' 'Age' 'count'
101 30 2
102 28 3
所以我认为使用any(),但是我没有解决。
答案 0 :(得分:2)
我认为如果MultiIndex
也在索引中首先检查所有值notna
,然后在列的第一级MultiIndex中至少检查DataFrameGroupBy.any
并最后计数{{1 }}个True
:
sum
如果索引中没有print (df.index)
MultiIndex(levels=[[101, 102], [28, 30]],
labels=[[0, 1], [1, 0]])
df = df.notna().groupby(axis=1, level=0).any().sum(axis=1)
#oldier pandas versions
#df = df.notnull().groupby(axis=1, level=0).any().sum(axis=1)
,则添加drop
删除MultiIndex
级:
info
如果需要按位置创建列,请使用insert
:
print (df.index)
RangeIndex(start=0, stop=2, step=1)
s = df.drop('info', level=0, axis=1).notnull().groupby(axis=1, level=0).any().sum(axis=1)
print (s)
0 2
1 3
dtype: int64