Python Pandas:保留仅包含项首次出现的DataFrame行
我有这个:
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