[英]how to counting True and False of Multiindex in pandas?
我在熊貓中使用multiindex。
例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]是假的
例2:
'info'
'PID' 'Age' 'count'
101 30 2
102 28 3
所以我認為使用any(),但我沒有解決它。
我認為如果MultiIndex
也需要在索引中首先檢查所有值的notna
,然后通過DataFrameGroupBy.any
檢查列中每個第一級MultiIndex至少一個,並且最后計算True
s by 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)
如果沒有MultiIndex
的指標增加drop
的刪除info
級別:
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
如果需要按位置創建列,請使用insert
:
df.insert(2, ('info','count'), s)
print (df)
info '2002' '2003' '2004'
'PID' 'Age' count 't1' 't2' 't1' 't2' 't1' 't2'
0 101 30 2 NaN 2 2 1.0 NaN NaN
1 102 28 3 2.0 5 1 NaN 10.0 100.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.