>

두 개의 다른 데이터 세트에있는 정보를 기반으로 계산하려고합니다. 첫 번째 데이터 프레임 repetead에 대한 모든 정보가 두 번째 데이터 프레임의 정보 수만큼 필요합니다.

예 :

데이터 프레임 1 :

name   price 
 A       1
 B       2

데이터 프레임 2 :

currency    value
  Dollar       1
  Euro         2

예상 출력 :

DataFrame 병합 :

name   price   currency    Value
 A       1       Dollar      1
 A       1       Euro        1
 B       2       Dollar      4
 B       2       Euro        4

적용 및 목록을 사용한 다음 DataFrame으로 변환하지만 결과가없는 것과 비슷한 것을 시도했습니다. 어쨌든 모든 이름에 대해 currs 값이 항상 반복됩니다 :

lst = []
for index, currs in currencies.iterrows():
    lst.append(prices.apply(lambda pmRow: pd.Series({'name':pmRow['prices'], 'curr':currs['currency']}), axis=1))

제안은? 감사합니다!


  • 답변 # 1

    cross join 가 필요한 것 같습니다 :

    df = pd.merge(df1.assign(A=1), df2.assign(A=1), on='A').drop('A', 1)
    print (df)
      name  price currency  value
    0    A      1   Dollar      1
    1    A      1     Euro      2
    2    B      2   Dollar      1
    3    B      2     Euro      2
    
    

    그리고 필요한 경우 여러 열 price  그리고 value :

    df['value'] *= df['price']
    print (df)
      name  price currency  value
    0    A      1   Dollar      1
    1    A      1     Euro      2
    2    B      2   Dollar      2
    3    B      2     Euro      4
    
    

관련 자료

  • 이전 java - htc m8 (601) - treeset contains (long)에서 클래스 캐스트 예외가 발생 함
  • 다음 azure - Cortana 기술/봇에서 다른 사용자에 대한 권한이 일치하지 않습니다