2014-05-11 2 views
1

두 개의 서로 다른 데이터 프레임의 동전 뒤집기가 있습니다. 나는 2 가지 발견 기능 만들고 싶어 = 0 파이썬 팬더는 n 열의 행에 대한 평균을 계산하는 함수를 만듭니다.

  • 그들이 얻을 연주 게임의 수는 그 점수 (100 % 만점)

    • 평균 점수 헤드 = 1 꼬리를

    n 열에 대해 함수를 동적으로 만들 수 있습니까?

    def score(data): 
        score_map = {'H':1, 'T':0} 
        data=data.replace(score_map) 
        data['average']= 
        data['rounds played']= 
    
    df=score(df) 
    

    내가

    결과이 같은 보일 것이 가능한 경우 GROUPBY를 사용할 필요가 추측하고있다 :

     Round 1 Round 2 Round 3 Average Rounds played 
    Users       
    Bob np.nan np.nan np.nan NaN  0 
    Jim   1  1  0 0.66  3 
    Ted np.nan  1  0 0.5  2 
    Jesus  0  1  0 0.33  3 
    James  1  0  0 0.33  2 
    
    [5 rows x 3 columns] 
    
  • 답변

    1
    을 여기
    import pandas as pd 
    import numpy as np 
    
    df=pd.DataFrame({'Users': [ 'Bob', 'Jim', 'Ted', 'Jesus', 'James'], 
           'Round 1': ['np.nan','H','np.nan','T','H'], 
           'Round 2': ['np.nan','H','H','H','T'], 
           'Round 3': ['np.nan','T','T','T','T'], 
           }) 
    
    df2=pd.DataFrame({'Users': [ 'Boob', 'Paul', 'Todd', 'Zeus', 'Derrik'], 
           'Round 1': ['H','H','np.nan','T','np.nan'], 
           'Round 3': ['H','T','H','T','np.nan'], 
           'Round 5': ['H','T','H','T','np.nan'], 
           'Round 7': ['H','H','H','H','H'], 
           }) 
    
    df = df.set_index('Users') 
    df2 = df2.set_index('Users') 
    print (df) 
    print (df2) 
    

    내가 뭘하려
    In [104]: def score_map(x): 
        .....:   if x=='H': return 1 
        .....:   if x=='T': return 0 
        .....:   return np.nan 
        .....: 
    
    In [105]: def score(data): 
        .....:   return_df = data.applymap(score_map) 
        .....:   avg = return_df.mean(axis=1) 
        .....:   nrounds = return_df.count(axis=1) 
        .....:   return_df['Average'] = avg 
        .....:   return_df['Rounds Played']=nrounds 
        .....:   return return_df 
        .....: 
    
    In [106]: score(df) 
    Out[106]: 
         Round 1 Round 2 Round 3 Average Rounds Played 
    Users              
    Bob  NaN  NaN  NaN  NaN    0 
    Jim   1  1  0 0.666667    3 
    Ted  NaN  1  0 0.500000    2 
    Jesus  0  1  0 0.333333    3 
    James  1  0  0 0.333333    3 
    
    [5 rows x 5 columns] 
    
    관련 문제