편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.06.08

    파이썬 판다스 데이터프레임에서 NaN 이 아닌 값의 갯수를 세기 + 약간의 조건


    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])
    
  • 프로필 땡큐베리너츠님의 편집
    날짜2022.06.08

    파이썬 판다스 기초 질문드려요


    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])