根据Python中的某些条件删除所有行

时间:2020-10-21 13:10:29

标签: python pandas conditional-statements

我有一个看起来像这样的数据框:

Q <- quantile(dataframe$Mileage, probs=c(.25, .75), na.rm = FALSE)
eliminated<- subset(dataframe, dataframe$Mileage > (Q[1] - 1.5*iqr) & dataframe$Mileage < (Q[2]+1.5*iqr))

我要做的是,如果某个会话中有第二次尝试的实例(例如3:2),那么我想删除同时具有该会话的第一次和第二次尝试的行。因此,在此示例中,我想告诉python删除3:1和3:2

3 个答案:

答案 0 :(得分:0)

类似这样的东西:

In [1479]: df[['session1', 'session2']] = df.session.str.split(':', expand=True)

In [1493]: df[df.groupby(['session1'])['session2'].transform('size').eq(1)].drop(['session1', 'session2'], axis=1)
Out[1493]: 
   subject session
0        1     1:1
1        1     2:1

答案 1 :(得分:0)

您可以这样做:

from pandas import DataFrame as df

dataframe = df(data={'A': [1, 2, 3], 'B': [3, 4, 5], 'C': [6, 7, 8 ]})
new_dataframe = dataframe[dataframe.B <= 3]
In [1]: from pandas import DataFrame as df

In [2]: dataframe = df(data={'A': [1, 2, 3], 'B': [3, 4, 5], 'C': [6, 7, 8 ]})

In [3]: dataframe
Out[4]: 
   A  B  C
0  1  3  6
1  2  4  7
2  3  5  8

In [5]: new_dataframe = dataframe[dataframe.B <= 3]

In [6]: new_dataframe
Out[7]: 
   A  B  C
0  1  3  6

来源:kite.com

答案 2 :(得分:0)

您要提取会话并删除重复项:

df['session1'] = df['session'].str.extract('^([^:]+)' )
df.drop_duplicates(['subject','session1'], keep=False)

输出:

   subject session session1
0        1     1:1        1
1        1     2:1        2