Python Pandas:保留仅包含项首次出现的DataFrame行

11 投票
4 回答
17830 浏览
提问于 2025-04-18 09:15

我有这个:

    Date value
0   1975     a
21  1975     b
1   1976     b
22  1976     c
3   1977     a
2   1977     b
4   1978     c
25  1978     d
5   1979     e
26  1979     f
6   1980     a
27  1980     f

我在找一种方法,只保留包含第一次出现的“值”的行。我想去掉重复的“值”,只保留日期最早的那一行。最后的结果应该是:

    Date value
0   1975     a
21  1975     b
22  1976     c
25  1978     d
5   1979     e
26  1979     f

4 个回答

1

我觉得更简单的方法是使用 groupby。

df = oldDf.groupby('value').first().reset_index()
3

FooBar说得对,不过sort这个方法已经不再使用了,取而代之的是sort_values。

dataframe = oldDf.sort_values('Date').drop_duplicates(subset=['value'])
6

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能会在使用某个功能时,发现它并没有按照预期的方式工作。这时候,我们就需要去查找原因,看看是不是有什么地方没有设置对,或者是使用的方法不对。

在这种情况下,最好的办法就是去网上搜索一下,看看有没有其他人遇到过类似的问题。StackOverflow就是一个很好的地方,很多程序员会在这里分享他们的经验和解决方案。如果你能找到一个和你遇到的问题相似的帖子,通常能帮助你更快地找到解决办法。

总之,遇到问题时不要慌张,先冷静下来,仔细检查自己的代码和设置,然后再去寻找帮助。记住,编程是一个不断学习和解决问题的过程,大家都会经历这些挑战。

df.drop_duplicates(subset=['value'], inplace=True)
16

为了更清楚地说明Quazi提到的内容:drop_duplicates()就是你需要的这个函数。默认情况下,它会保留第一次出现的内容,然后把后面的重复项都去掉。想了解更多信息,可以查看官方文档。所以,为了确保你能正确使用,建议你这样做:

>>> dataframe = oldDf.sort('Date').drop_duplicates(subset=['value'])
>>> dataframe
Out[490]: 
    Date value
0   1975     a
21  1975     b
22  1976     c
25  1978     d
5   1979     e
26  1979     f

撰写回答