>

ProductName 값이 Salad 인 행의 경우 "SaleTypeName"열의 NaN 셀 값을 "valid"로 채우려 고합니다.

지금까지 나는 이걸로왔다 : sales [ 'SaleTypeName']. fillna ( "유효", 인플레 이스 = 참) 그러나 NaN이 나타날 때 전체 열이 채워지지 않도록 조건부 측면이 누락되었습니다.

다음 데이터가 있습니다 :

import pandas as pd
df = pd.DataFrame ({'Flight Day': ['2018-10-01', '2018-10-01','2018-10-01', '2018-10-01', '2018-10-02','2018-10-02', '2018-10-02', '2018-10-02', '2018-10-03','2018-10-03’, '2018-10-03','2018-10-03’],'Flight Number': [LX1336, LX1337, LX1472, LX1473, LX1336, LX1337, LX1472, LX1473, LX1336, LX1337, LX1472, LX1473],'STD Departure': [10, 15, 8, 11,10, 15, 8, 14,10, 15, 8, 11], ‘Quantity': [2, NaN, 8, 4,3, 2, 3, 1,NaN, 5, 2, 1],’ProductName': [Bircher, Salad, Carac, Salad, Bircher, Carac, Carac, Salad,Bircher, Carac, Carac, Salad], 'SaleTypeName': [NaN, NaN, NaN, NaN ,NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]})

  • 답변 # 1

    사용할 수 있습니다

    df.SaleTypeName.mask(df.ProductName=='Salad', 'Valid', inplace=True)
    
    

    mask()  이 함수는 ProductName 로 행을 선택하는 데 사용됩니다.   "Salad" 로  와이즈 비즈  값이 SaleTypeName 로 대체 된 열 .

    "Valid"  인수는 원래 데이터 프레임 자체를 변경하는 데 사용됩니다.

    문서를 참조하십시오.

  • 답변 # 2

    이 특정 문제의 경우이 코드를 사용해보고 나중에 적절하게 수정할 수 있습니다.

    데이터 프레임 :

    inplace
    
    

    구현할 코드 부분 :

    import pandas as pd
    import numpy as np
    df = pd.DataFrame (
        {'Flight Day': ['2018-10-01', '2018-10-01','2018-10-01', '2018-10-01', '2018-10-02','2018-10-02', '2018-10-02', '2018-10-02', '2018-10-03','2018-10-03', '2018-10-03','2018-10-03'],
         'Flight Number': ['LX1336', 'LX1337', 'LX1472', 'LX1473', 'LX1336', 'LX1337', 'LX1472', 'LX1473', 'LX1336', 'LX1337', 'LX1472', 'LX1473'],
         'STD Departure': [10, 15, 8, 11,10, 15, 8, 14,10, 15, 8, 11],
         'Quantity': [2, np.NaN, 8, 4,3, 2, 3, 1,np.NaN, 5, 2, 1],
         'ProductName': ['Bircher',' Salad',' Carac',' Salad',' Bircher',' Carac',' Carac',' Salad','Bircher',' Carac',' Carac',' Salad'],
         'SaleTypeName': [np.NaN, np.NaN, np.NaN, np.NaN ,np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN]})
    
    

    출력 :

    def replace(name):
        return "valid" if name.strip()=="Salad" else np.NaN
    df['SaleTypeName'] = df.loc[:,'ProductName'].apply(lambda x: replace(x))
    
    
    ProductName SaleTypeName 0 Bircher NaN 1 Salad valid 2 Carac NaN 3 Salad valid 4 Bircher NaN 5 Carac NaN 6 Carac NaN 7 Salad valid 8 Bircher NaN 9 Carac NaN 10 Carac NaN 11 Salad valid

관련 자료

  • 이전 php - ImageMagick을 사용하여 이미지 데이터베이스를 사용하여 이미지를 비교 하시겠습니까?
  • 다음 geometry - 알고리즘 - 기하학적 모양에는 다른 모양이 포함될 수 있습니다