簡體   English   中英

如何計算熊貓中Multiindex的真假?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM