>source

특정 값을 기준으로 두 개의 df를 여러 번하려고합니다.

data = {'a':10,'b':20,'c':30} .

df1 :

id,tag,factor
1,a ,20 
2,b ,22 
3,c ,25

최종 결과는 다음과 같습니다.

id,factor,calc  
1,20,200
2,22,440
3,24,750

내가 시도했지만 오류가 발생한 단계.

df['calc'] = df['factor'] * data.get(df['tag'])


  • 답변 # 1

    귀하의 경우

    df1['calc']=df1.factor*df1.tag.map(data)
    
    

    또는 다른 일을하다

    df['calc']=df.factor*np.vectorize(data.get)(df.tag)#pd.Series(data).get(df.tag).values
    
    

  • 답변 # 2

    df1['calc']=df1.factor*df1.tag.map(data)
    
    

    df1.tag.map(data)   data 를 확인  사전 값과 관련 키로 대체하여 df1.factor 를 곱할 수있는 새로운 시리즈를 제공합니다.

  • 답변 # 3

    pandas.Series.map 및 pandas.DataFrame.drop을 사용할 수 있습니다

    df['calc'] = df['factor'] * df['tag'].map(data)
    df.drop('tag', axis=1, inplace=True)
    
    

    출력 :

      id  factor  calc
    0   1      20   200
    1   2      22   440
    2   3      25   750
    
    

  • 답변 # 4

    df['calc'] = df['factor'] * pd.Series([data[key] for key in df["tag"]])
    
    

    출력

      id  factor  calc
    0   1      20   200
    1   2      22   440
    2   3      25   750
    
    

  • 답변 # 5

    목록 이해력 사용

    df1['calc'] = [x.factor * data[x.tag] for i, x in df1.iterrows()]
    
    

    출력은

      id tag  factor  calc
    0   1   a      20   200
    1   2   b      22   440
    2   3   c      25   750
    
    

관련 자료

  • 이전 pytorch - 튜플/텐서 목록을 단일 텐서로 취급
  • 다음 javascript - 팀 이름과 목표 확률을 포함하는 변수를 비교하고 정렬하는 방법