假设我有一个这样的数据框:
Var0 Var1
0 11 22 <--------- Get 1st element of matching
1 11 84
2 8 36 <--------- Get 1st element of matching
3 8 8
4 8 10
5 6 12 <--------- Get 1st element of matching
我想得到这个结果:
Var0 Var1
0 11 22
2 8 36
5 6 12
首先,我按sort_values()
对数据框进行排序:
df.sort_values(['Var0'], ascending=['False'])
我认为我应该使用set
,但不确定在哪里使用。
由于速度原因,我不想遍历数据框。
答案 0 :(得分:3)
使用重复项:
df[~df['Var0'].duplicated()]
print(df)
Var0 Var1
0 11 22
2 8 36
5 6 12
答案 1 :(得分:1)
我们还可以使用groupby
方法.head
:
df = df.groupby('Var0', sort=False, as_index=False).head(1)
print(df)
Var0 Var1
0 11 22
1 8 36
2 6 12
答案 2 :(得分:1)
这仅仅是drop_duplicates
df.drop_duplicates('Var0')
Out[230]:
Var0 Var1
0 11 22
2 8 36
5 6 12
答案 3 :(得分:0)
另一种方法是使用pd.Series.searchsorted
(或numpy.searchsorted
)。
import numpy as np
import pandas as pd
data = pd.DataFrame({'x': [1, 1, 1, 3, 3, 4, 5]})
values = [1, 3, 4, 5] # we want to find first occurrence indices for these values
common_values = np.intersect1d(data.x.values, values)
print(common_values) # get common values
print(data.x.searchsorted(common_values))
print(data.loc[data.x.searchsorted(common_values)])