簡體   English   中英

通過對現有數據框應用邏輯來創建新的 Pandas 數據框

[英]Creating a new pandas dataframe by applying logic to already existing dataframes

我有兩個熊貓數據框如下。

data_1= {'features_names': ['F1','F2','F3','F4'],
        'Sample_1': [2260,25000,27000,35000],
        'Sample_2': [22000,25,8,35000],
         'Sample_3': [2350,25000,27000,3900],
         'Sample_4': [25000,2570,250,3000]

        }
df_1 = pd.DataFrame(data_1)

在此處輸入圖片說明

和另一個數據框如下。

data_2={'Sample_name': ['Sample_2','Sample_3','Sample_4','Sample_1'],
        'class': ['class_1','class_1','class_2','class_3'],
        'sex': ['m','m','f','m'],
         'age': [23,25,21,35],
         'RIN': [2.5,2.8,3.8,3.0]

        }
df_2 = pd.DataFrame(data_2)

在此處輸入圖片說明

現在使用df_1df_2 ,我想創建df_3 ,它應該如下所示。 在此處輸入圖片說明

我已使用以下代碼手動完成。

data_3= {
    'class': ['class_3','class_1','class_1','class_2'],

    'sex': ['m','m','f','f'],

    'age': [35,23,25,21],

    'RIN': [3.0,2.5,2.8,3.8],

    'features_names': ['F1','F2','F3','F4'],
        'Sample_1': [2260,25000,27000,35000],
        'Sample_2': [22000,25,8,35000],
         'Sample_3': [2350,25000,27000,3900],
         'Sample_4': [25000,2570,250,3000]

        }
df_3 = pd.DataFrame(data_3)

但實際上,我有大量的數據,手動操作是不可能的。 有沒有自動的方法來做到這一點。

按列Sample_name通過DataFrame.sort_values使用concat與排序的DataFrame.sort_values ,然后刪除列:

df_3 = (pd.concat([df_2.sort_values('Sample_name').reset_index(drop=True), df_1], axis=1)
          .drop('Sample_name', axis=1))
print (df_3)

     class sex  age  RIN features_names  Sample_1  Sample_2  Sample_3  \
0  class_3   m   35  3.0             F1      2260     22000      2350   
1  class_1   m   23  2.5             F2     25000        25     25000   
2  class_1   m   25  2.8             F3     27000         8     27000   
3  class_2   f   21  3.8             F4     35000     35000      3900   

   Sample_4  
0     25000  
1      2570  
2       250  
3      3000  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM