df에서 dd 인덱스 순서대로 NaN 제외한 열별로 value 개수 총합을 구하려고 하는데요
이전 df value값이 NaN이면 그 행은 제외하고 카운팅 되면 좋겠어요.
하드코딩한건 아래와 같습니다.
예시에선 4개 열뿐이지만 더 개수가 많아질 경우를 대비해서 lambda apply 써서 간단하게 하고 싶은데 어렵네요.
안된다면 for 문이라도요.
02 -> 5개(foo, fid, bar, cute, you)
06 -> 4개(q, d, e, vd)
07 -> 2개(g, z)
08 -> 1개(a)
[5, 4, 2, 1] 로 결과값이 나오면 좋겠는데 어떻게 해야하는지 모르겠네요 ..
import pandas as pd
import numpy as np
dd = {'02':1,'06':2,'07':3,'08':4}
dd = pd.DataFrame.from_dict(dd, orient = 'index', columns = ['step'])
print(dd)
left = pd.DataFrame({'02':['foo','fid','bar','cute'], '06':['q','d','e','vd']})
right = pd.DataFrame({'02':['foo','you','bar'],'07':['g','v','z'], '08':['a','b','c']})
df = pd.merge(left,right, on=['02'], how='outer')
df.iloc[2,3] = np.nan
print()
print(df)
df2 = df.loc[df['06'].notnull()]
df3 = df2.loc[df2['07'].notnull()]
df4 = df3.loc[df3['08'].notnull()]
a = df['02'].notnull().sum()
b = df2['06'].notnull().sum()
c = df3['07'].notnull().sum()
d = df4['08'].notnull().sum()
print()
print([a,b,c,d])