如果列ID值较大,则为Python Pandas

时间:2018-09-04 15:31:08

标签: python pandas if-statement

我有一个简单的问题,但是我不确定如何实现。 我有以下数据框:

ID    Value
1     100
2     250
3     300
4     400
5     600
7     800

我想查看2个ID:3和5,然后删除值较低的一个。因此,我假设我将使用类似以下代码的内容,但是同样,我不确定如何实现,也不确定如何将不等式指向值,同时将函数定向到一对非常特定的id上。

def ChooseGreater(x):
    if df['id'] == 3 > df['id'] ==5
        return del df['id']==5
    else:
        return del df['id']==3

谢谢!

4 个答案:

答案 0 :(得分:4)

我认为您可以做到:

df.drop(df.loc[df.ID.isin([3,5]),'Value'].idxmin(), inplace=True)

答案 1 :(得分:3)

使用Python的min

df.drop(min(df.query('ID in [3, 5]').index, key=df.Value.get))

   ID  Value
0   1    100
1   2    250
3   4    400
4   5    600
5   7    800

groupbytail

df.sort_values('Value').groupby(df.ID.replace({3: 5})).tail(1)

   ID  Value
0   1    100
1   2    250
3   4    400
4   5    600
5   7    800

答案 2 :(得分:2)

您可以计算idxmin,然后将np.in1dpd.DataFrame.loc一起使用:

idx = df.loc[df['ID'].isin([3,5]), 'Value'].idxmin()
res = df.loc[~np.in1d(df.index, idx)]

print(res)

   ID  Value
0   1    100
1   2    250
3   4    400
4   5    600
5   7    800

答案 3 :(得分:1)

这是df <- lapply(df, function(x) as.numeric(gsub("[$,]", "", x)))

中的方法
groupby