>

내 데이터 프레임 값을 str로 변환하지만 함께 연결할 때 이전 정수에는 후행 소수점이 포함됩니다.

df["newcol"] = df['columna'].map(str) + '_' + df['columnb'].map(str) + '_' + df['columnc'].map(str)

이것은 나에게 출력을주고있다 500.0  이 선행/트레일 링 소수를 제거하려면 어떻게해야합니까?때로 a 열의 데이터에 영숫자가 아닌 문자가있습니다.

+---------+---------+---------+------------------+----------------------+
| columna | columnb | columnc |     expected     |  currently getting   |
+---------+---------+---------+------------------+----------------------+
|         |      -1 |      27 | _-1_27           | _-1.0_27.0           |
|         |      -1 |      42 | _-1_42           | _-1.0_42.0           |
|         |      -1 |      67 | _-1_67           | _-1.0_67.0           |
|         |      -1 |      95 | _-1_95           | _-1.0_95.0           |
| 91_CCMS |   14638 |      91 | 91_CCMS_14638_91 | 91_CCMS_14638.0_91.0 |
| DIP96   |    1502 |      96 | DIP96_1502_96    | DIP96_1502.0_96.0    |
| 106     |   11694 |     106 | 106_11694_106    | 00106_11694.0_106.0  |
+---------+---------+---------+------------------+----------------------+

오류 :

invalid literal for int() with base 10: ''


  • 답변 # 1

    수정:
    당신의 df 경우  열이 3 개 이상이고 열을 3 개만 조인하려는 경우 열 슬라이싱을 사용하여 명령에서 해당 열을 지정할 수 있습니다. 당신의 df 를 가정  이름이 다음과 같이 5 개의 열이 있습니다 : AA BB CC DD EE . 열 CC 만 결합하고 싶습니다. DD EE . fillna 전에 3 열을 지정하면됩니다. 결과를 newcol 에 지정하십시오.  당신이 원하는대로 :

    df["newcol"] = df[['CC', 'DD', 'EE']].fillna('') \
                       .applymap(lambda x: x if isinstance(x, str) else str(int(x))).agg('_'.join, axis=1)
    
    

    참고 : '\' 를 사용하여 명령을 두 줄로 나눕니다.  쉽게 읽을 수 있습니다.

    <시간>

    원본:
    나는 당신의 columna 의 실제 데이터를 추측   와이즈 비즈   와이즈 비즈   columnb 를 포함 columnc str , 빈 공간, 빈 공간 및 어쩌면 float .

    int  열 dtype NaN 에서 10 진수 값 = .00  소수점없이 표시됩니다.

    와이즈 비즈 가정  3 열만 있습니다 : Float object df  당신이 말한대로. 아래 명령을 사용하면 colmna 가 처리됩니다. columnb columnc str  원하는대로 3 개의 열을 하나로 결합하십시오 :

    float
    
    
    <시간>

    나와 비슷한 샘플을 만들었습니다

    int
    
    

    명령을 사용하면 설명대로 '.0'을 갖는 연결된 문자열이 반환됩니다.

    NaN
    
    

    내 명령 사용 :

    df.fillna('').applymap(lambda x: x if isinstance(x, str) else str(int(x))).agg('_'.join, axis=1)
    
    

  • 답변 # 2

    이 오류를 재현 할 수 없었지만 다음과 같이 시도해보십시오 :

      columna columnb columnc
    0               -1      27
    1      NaN      -1      42
    2               -1      67
    3               -1      95
    4  91_CCMS   14638      91
    5    DIP96              96
    6      106   11694     106
    
    
    df['columna'].map(str) + '_' + df['columnb'].map(str) + '_' + df['columnc'].map(str) Out[1926]: 0 _-1.0_27.0 1 nan_-1.0_42.0 2 _-1.0_67.0 3 _-1.0_95.0 4 91_CCMS_14638_91 5 DIP96__96 6 106_11694_106 dtype: object

  • 이전 r - 오류 - ggplot2 및 datatable에 대한 패키지 또는 네임 스페이스로드에 실패했습니다
  • 다음 파이썬"클래스"단어 상징