【问题标题】:Pandas: how to select rows in data frame based on condition of a specific value on a specific column [duplicate]Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]
【发布时间】:2020-01-10 10:40:04
【问题描述】:

我有一个给定的数据框,如下例:

            0  1      2      3      4      5        6        7        8  
0      842517  M  20.57  17.77  132.9   1326  0.08474  0.07864   0.0869   
1    84300903  M  19.69  21.25    130   1203   0.1096   0.1599   0.1974   
2    84348301  M  11.42  20.38  77.58  386.1   0.1425   0.2839   0.2414   
3      843786  M  12.45   15.7  82.57  477.1   0.1278     0.17   0.1578   
4      844359  M  18.25  19.98  119.6   1040  0.09463    0.109   0.1127  

我编写了一个函数,该函数应根据特定列中的值与特定值的比较将数据集拆分为 2 个数据帧。 例如,如果我有col_idx = 2value=18.3,结果应该是:

df1 - 低于值:

            0  1      2      3      4      5        6        7        8    
2    84348301  M  11.42  20.38  77.58  386.1   0.1425   0.2839   0.2414   
3      843786  M  12.45   15.7  82.57  477.1   0.1278     0.17   0.1578   
4      844359  M  18.25  19.98  119.6   1040  0.09463    0.109   0.1127 

df2 - 高于值:

            0  1      2      3      4      5        6        7        8  
0      842517  M  20.57  17.77  132.9   1326  0.08474  0.07864   0.0869   
1    84300903  M  19.69  21.25    130   1203   0.1096   0.1599   0.1974   

函数应该如下所示:

def split_dataset(data_set, col_idx, value):
    below_df = ?
    above_df = ?
    return below_df, above_df

有人可以完成我的脚本吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:
    below_df = data_set[data_set[col_idx] < value]
    above_df = data_set[data_set[col_idx] > value]  # you have to deal with data_set[col_idx] == value though
    

    【讨论】:

      【解决方案2】:

      你可以使用loc:

      def split_dataset(data_set, col_idx, value):
          below_df = df.loc[df[col_idx]<=value]
          above_df = df.loc[df[col_idx]>=value]
          return below_df, above_df
      df1,df2=split_dataset(df,'2',18.3)
      

      输出:

      df1
      
                0  1      2      3       4       5        6       7       8
      2  84348301  M  11.42  20.38   77.58   386.1  0.14250  0.2839  0.2414
      3    843786  M  12.45  15.70   82.57   477.1  0.12780  0.1700  0.1578
      4    844359  M  18.25  19.98  119.60  1040.0  0.09463  0.1090  0.1127
      

      df2
                0  1      2      3      4       5        6        7       8
      0    842517  M  20.57  17.77  132.9  1326.0  0.08474  0.07864  0.0869
      1  84300903  M  19.69  21.25  130.0  1203.0  0.10960  0.15990  0.1974
      

      注意:

      请注意,在此函数调用中,列的名称是数字。在调用函数之前,您必须知道正确的列类型。您可能必须使用string 类型。


      您还应该定义如果将数据框划分的值(值)包含在数据框的列中会发生什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-03
        • 2020-02-24
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        • 1970-01-01
        • 2021-06-21
        • 1970-01-01
        相关资源
        最近更新 更多