我有一个简单的问题,但是我不确定如何实现。 我有以下数据框:
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
谢谢!
答案 0 :(得分:4)
我认为您可以做到:
df.drop(df.loc[df.ID.isin([3,5]),'Value'].idxmin(), inplace=True)
答案 1 :(得分:3)
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
groupby
和tail
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.in1d
与pd.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