>

팬더 데이터 프레임의 마지막 열에 추가하는 np.array 데이터 열이 있습니다. 그러나 해당 np.array 내에서 오름차순으로 정렬 된 데이터가 필요합니다. (이는 데이터 프레임에서 오름차순으로 정렬되지 않습니다.)

데이터 프레임 구조 :

   GFP_spot_1_position, GFP_spot_2_position, GFP_spot_3_position, ...  
    0 _        0.2,                 0.4,              0.6,              NaN          
    1 _        0.8,                 0.2,              NaN,              NaN         
    2 _        0.7,                 0.5,              0.6,              0.9      
    3 _        0.5,                 NaN,              0.1,              NaN     

내가 원하는 모습 :

   gfp_spots_all                         
    0 _ [0.2, 0.4, 0.6, nan]             
    1 _ [0.2, 0.8, nan, nan]               
    2 _ [0.5, 0.6, 0.7, 0.9]            
    3 _ [0.1, 0.5, nan, nan]

실제로 아래 코드에서 보이는 모습 :

   gfp_spots_all                                      
    0 _        [0.2,                 0.4,              0.6,              NaN]          
    1 _        [0.8,                 0.2,              NaN,              NaN]       
    2 _        [0.7,                 0.5,              0.6,              0.9]      
    3 _        [0.5,                 NaN,              0.1,              NaN]     

지금까지 가지고있는 코드는 다음과 같습니다.

df = pd.read_csv('dfall.csv')
dfgfp = df.loc[:, 'GFP_spot_1_position':'GFP_spot_4_position']
df['gfp_spots_all'] = dfgfp.apply(lambda r: list(r), 
    axis=1).apply(np.array)
df.head()

배열의 값을 보거나 정렬 할 수 없습니다. 도와주세요! 또한, 나는 파이썬을 처음 접했기 때문에 배우고 있습니다. 조잡한 코드를 자유롭게 수정하십시오.


  • 답변 # 1

    더 많은 pythonique 가 있어야합니다  방법이 있지만 여기에 해결 방법이 있습니다.

    In [1]:
    import pandas as pd
    # Create the Dataframe
    data = {'col1': [[9, 3], [2, 4], [7, 6], [3, 3], [8, 0], [0,4]], 'col2': [[1,3], [9,4], [4,2], [5,1], [3,7], [9,8]]}
    df = pd.DataFrame(data=data)
    ## Loop on each row
    for i in range(len(df)):
        for k in range(len(df.columns)):
            df.iloc[i][k].sort()
    df
    Out [1]:
        col1    col2
    0   [3, 9]  [1, 3]
    1   [2, 4]  [4, 9]
    2   [6, 7]  [2, 4]
    3   [3, 3]  [1, 5]
    4   [0, 8]  [3, 7]
    5   [0, 4]  [8, 9]
    
    
    

  • 답변 # 2

    가능합니다. 아래 코드를 참조하십시오

    arr = np.array([[3,5,1,7,4,2],[12,18,11,np.nan,np.nan,18]])
    df = pd.DataFrame(arr)
    print(df)
    
    

    출력

         0     1     2    3    4     5
    0   3.0   5.0   1.0  7.0  4.0   2.0
    1  12.0  18.0  11.0  NaN  NaN  18.0
    
    
    np.ndarray.sort(df.values)
    print(df)
    
    

    출력

        0     1     2     3    4    5
    0   1.0   2.0   3.0   4.0  5.0  7.0
    1  11.0  12.0  18.0  18.0  NaN  NaN
    
    

    그러나 값과 열이 일치하지 않습니까? 그럴까요?

  • 답변 # 3

    @G에 따라. sorted() 를 추가하는 앤더슨의 의견  람다 식으로 문제를 해결할 것입니다. 실제로 예제에서 약간의 코드가 중복됩니다 :

    dfgfp = df.loc[:, 'GFP_spot_1_position':'GFP_spot_4_position']
    df['gfp_spots_all'] = dfgfp.apply(lambda r: sorted(r), axis=1)
    
    

    필요한 일을 할 것이라고 믿습니다.

  • 답변 # 4

    # Here's what worked   
    df = pd.read_csv('dfall.csv')
    dfgfp = df.loc[:, 'GFP_spot_1_position':'GFP_spot_4_position']
    df['gfp_spots_all'] = dfgfp.apply(lambda r: list(r), axis=1).apply(np.array)
    dfjust = pd.DataFrame([df.gfp_spots_all]).transpose()
    
    ## Loop on each row
    for i in range(len(dfjust)):
         for k in range(len(dfjust.columns)):
             dfjust.iloc[i][k].sort()
    dfjust.head()
    [out:]
        gfp_spots_all .      
    0   [3.4165, 19.63, nan, nan]                       
    1   [6.7447, 18.044, nan, nan]         
    2   [5.088, 10.261, nan, nan]         
    3   [5.4081, 16.097, nan, nan]     
    4   [4.2675, nan, nan, nan]      
    
    5 rows × 1 columns
    
    

관련 자료

  • 이전 arrays - MATLAB에서 m x n 행렬을 쉼표로 구분 된 텍스트 파일로 변환하는 방법은 무엇입니까?
  • 다음 kubectl - Kubernetes의 포드간에 영구 볼륨 공유