Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]

Posted

技术标签:

【中文标题】Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]【英文标题】:Pandas: how to select rows in data frame based on condition of a specific value on a specific column [duplicate] 【发布时间】: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

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

【问题讨论】:

【参考方案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 类型。


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

【讨论】:

以上是关于Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据条件在Pandas DataFrame中选择行

根据特定条件和输入字典生成数据框 - pandas

在特定列上更新熊猫

Pandas:如果特定列满足特定条件,则选择行

Pandas GroupBy 并选择特定列中具有最小值的行

pandas如何删除指定行