>

두 테이블을 함께 결합해야합니다 :

예 :

표 1

index'      (GBP, USD)  (USD, RUB)   etc...
2019-07-01      1.1         62          ...
2019-07-02      1.2         63          ...
2019-07-03      1.3         64          ...

표 2

date          pair  
2019-07-01  GBP, USD    
2019-07-01  USD, RUB    
2019-07-02  GBP, USD    
2019-07-02  USD, RUB   

목표는 표 1에 비율을 보여주는 표 2에 새 열을 생성하는 일종의 조인을 추가하는 것입니다.

최종

date          pair     Rate
2019-07-01  GBP, USD    1.1
2019-07-01  USD, RUB    62 
2019-07-02  GBP, USD    1.2
2019-07-02  USD, RUB    63

pd.merge의 몇 가지 변형을 시도했지만 원하는 것을 얻을 수 있습니다. 다른 것을해야합니까?

  • 답변 # 1

    정리

    먼저 정리가 필요합니다. 와이즈 비즈  긴 형식이어야하며 해당 열이 튜플처럼 보이는 문자열이 아닌 튜플이어야합니다.

    tbl1
    
    

    <시간>

    또는 그대로두고 열을 수정

    fx = tbl1.stack().rename_axis(['date', 'pair']).reset_index(name='FX')
    fx['pair'] = fx['pair'].str[1:-1].str.split(', ').map(tuple)
    fx
            date        pair    FX
    0 2019-07-01  (GBP, USD)   1.1
    1 2019-07-01  (USD, RUB)  62.0
    2 2019-07-02  (GBP, USD)   1.2
    3 2019-07-02  (USD, RUB)  63.0
    4 2019-07-03  (GBP, USD)   1.3
    5 2019-07-03  (USD, RUB)  64.0
    
    

    <시간>

    tbl1.columns = tbl1.columns.str[1:-1].str.split(', ').map(tuple) tbl1 GBP USD USD RUB index 2019-07-01 1.1 62 2019-07-02 1.2 63 2019-07-03 1.3 64   tbl2 를 보장해야  열은 튜플처럼 보이는 문자열이 아닌 튜플입니다.

    pair
    
    

    <시간> 위즈 위즈

    고정식 tbl2 = tbl2.assign(pair=tbl2.pair.str.split(', ').map(tuple)) tbl2 pair date 2019-07-01 (GBP, USD) 2019-07-01 (USD, RUB) 2019-07-02 (GBP, USD) 2019-07-02 (USD, RUB) 사용

    lookup
    
    

    <시간> 위즈 위즈

    긴 형식 tbl1 사용

    tbl2.assign(FX=tbl1.lookup(tbl2.index, tbl2.pair))
                      pair    FX
    date                        
    2019-07-01  (GBP, USD)   1.1
    2019-07-01  (USD, RUB)  62.0
    2019-07-02  (GBP, USD)   1.2
    2019-07-02  (USD, RUB)  63.0
    
    

    pd.merge_asof

  • 이전 regex - 두 문자열 사이의 줄에서 마지막으로 나타나는 문자열 교체
  • 다음 R - 아르 자형 - 단어 목록에서 문자열의 정확한 일치를 계산 한 다음 단어 당 점수를 사용하여 전체 감정을 계산