>

일부 시퀀스 번호를 기준으로 파일 이름 목록이 포함 된 열을 데이터 프레임에 만들고 싶습니다.

다음과 같은 기본 데이터 프레임이 있습니다 :

 num letter 
0    0    I   
1    1    P  
2    2    I  
2    3    B  
2    4    P  
2    5    B  
2    6    I 

와 내가 가진 파일 이름은 I-0001.jpg, I-0002.jpg, I-0003.jpg, P-0001.jpg, P-0002.jpg, B-0001.jpg, B-0002.jpg 입니다.

내가 원하는 최종 결과는 :

  num  letter  file
0    0    I   I-0001.jpg
1    1    P   P-0001.jpg
2    2    I   I-0002.jpg
2    3    B   B-0001.jpg
2    4    P   P-0002.jpg
2    5    B   B-0002.jpg
2    6    I   I-0003.jpg

따라서 기본적으로 열 파일은 "letter"열에서 I 또는 P 또는 B가 발견 될 때마다 번호를 기준으로 파일 이름에 I, P 또는 B가있는 파일 이름을 선택합니다. 각 파일.

도움이 있습니까?

  • 답변 # 1

    letter 열에 가입 할 수 있습니다   Series 와 함께  만든 GroupBy.cumcount   letter 당 카운터 s, 1 를 추가하십시오 , string 로 변환 필요한 경우 str.zfill 를 추가하십시오. :

    df['file'] = (df['letter'] + '-' +
                  df.groupby('letter').cumcount().add(1).astype(str).str.zfill(4) + '.jpg')
    print (df)
       num letter        file
    0    0      I  I-0001.jpg
    1    1      P  P-0001.jpg
    2    2      I  I-0002.jpg
    2    3      B  B-0001.jpg
    2    4      P  P-0002.jpg
    2    5      B  B-0002.jpg
    2    6      I  I-0003.jpg
    
    

    세부 정보:

    print (df.groupby('letter').cumcount())
    0    0
    1    0
    2    1
    2    0
    2    1
    2    1
    2    2
    dtype: int64
    print (df.groupby('letter').cumcount().add(1).astype(str).str.zfill(4))
    0    0001
    1    0001
    2    0002
    2    0001
    2    0002
    2    0002
    2    0003
    dtype: object
    
    

관련 자료

  • 이전 mysql - 다른 데이터베이스 연결의 외래 키
  • 다음 java - Blob 암호화에서 AbstractMethod 오류를 해결하는 방법?