python - 在数据框列中保留重复项的第一个和最后一个条目

标签 python pandas dataframe duplicates

我有一个很大的数据框,里面有很多重复项。我想保留每个重复项的第一个和最后一个条目,但删除中间的每个重复项。

我已经尝试通过使用带有参数“first”和“last”的 df.drop_duplicates 来完成此操作,以获得两个数据帧,然后将它们再次合并到一个 df,这样我就有了第一个和最后一个条目,但是没用。

df_first = df
df_last = df

df_first['Path'].drop_duplicates(keep='first', inplace=True)
df_last['Path'].drop_duplicates(keep='last', inplace=True)

提前感谢您的帮助!

最佳答案

使用GroupBy.nth如果长度为 1 的组避免重复:

df = pd.DataFrame({
         'a':[5,3,6,9,2,4],
         'Path':list('aaabbc')
})
print(df)
   a Path
0  5    a
1  3    a
2  6    a
3  9    b
4  2    b
5  4    c

df = df.groupby('Path').nth([0, -1])
print (df)
      a
Path   
a     5
a     6
b     9
b     2
c     4

关于python - 在数据框列中保留重复项的第一个和最后一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58198147/

相关文章:

python - 如何在 Pandas 数据框中找到两个索引之间的最大值

python - 将多列求和为两列输出/数据帧

python - 将函数应用于可以返回多行的pandas DataFrame

python - 一些不尊重 Series 子类中的自定义属性的操作

python - 单击 : "Got unexpected extra arguments" when passing string

python - 调试器不会在 VS Code for Python 中的断点处停止

r绑定(bind) data.table 列表的列表

Python 继承和 super()

python3.5/pandas - 将多列转换为日期时间

r - 数据帧错误: arguments imply differing number of rows