Python 数据帧删除连续的重复项
如何删除数据帧中的连续/连续/相邻重复项 我以CSV格式处理数据,按日期排序,然后按识别号排序。识别号可以在不同的日子出现,但我只想删除每日的重复。drop_duplicates会留下一个唯一的实例,但会在所有其他日期删除该标识符。我已尝试,但出现错误:Python 数据帧删除连续的重复项,python,pandas,duplicates,dataframe,contiguous,Python,Pandas,Duplicates,Dataframe,Contiguous,如何删除数据帧中的连续/连续/相邻重复项 我以CSV格式处理数据,按日期排序,然后按识别号排序。识别号可以在不同的日子出现,但我只想删除每日的重复。drop_duplicates会留下一个唯一的实例,但会在所有其他日期删除该标识符。我已尝试,但出现错误: localhost:~/Desktop/Public$ python3 test.py Traceback (most recent call last): File "test.py", line 31, in <module&g
localhost:~/Desktop/Public$ python3 test.py
Traceback (most recent call last):
File "test.py", line 31, in <module>
df2.loc[df2.shift(1) != df2]
File "/usr/lib/python3/dist-packages/pandas/core/indexing.py", line 1028, in __getitem__
return self._getitem_axis(key, axis=0)
File "/usr/lib/python3/dist-packages/pandas/core/indexing.py", line 1148, in _getitem_axis
raise ValueError('Cannot index with multidimensional key')
ValueError: Cannot index with multidimensional key
只有当
df2
是系列
而不是数据帧
时,才可以使用.loc
进行索引。实际上,您正试图使用Boleen的数据帧进行索引,。loc
不知道该做什么(它试图将其用作多索引):
相反,您希望执行以下操作:
>>> df.loc[df.DATE.shift() != df.DATE]
DATE REC NAME
0 2009-07-02 682566 Schmoe, Joe
2 2009-07-11 325640 Black, Joe
5 2009-07-16 200560 White, Joe
>>> df.loc[(df.DATE != df.DATE.shift(1)) | (df.REC != df.REC.shift(1))]
DATE REC NAME
0 2009-07-02 682566 Schmoe, Joe
1 2009-07-02 244828 Doe, Joe
2 2009-07-11 325640 Black, Joe
3 2009-07-11 544440 Dirt, Joe
5 2009-07-16 200560 White, Joe
6 2009-07-16 685370 Purple, Joe
8 2009-07-16 635400 Red, Joe
9 2009-07-16 348562 Blue, Joe
.loc
在这里工作,因为我们只是为索引创建了一个boleen系列:
>>> df.DATE.shift() != df.DATE
0 True
1 False
2 True
3 False
4 False
5 True
6 False
7 False
8 False
9 False
当然,这不是你想要的数据。要等效于df.drop_duplicates(['REC','DATE'])
,您需要以下内容:
>>> df.loc[df.DATE.shift() != df.DATE]
DATE REC NAME
0 2009-07-02 682566 Schmoe, Joe
2 2009-07-11 325640 Black, Joe
5 2009-07-16 200560 White, Joe
>>> df.loc[(df.DATE != df.DATE.shift(1)) | (df.REC != df.REC.shift(1))]
DATE REC NAME
0 2009-07-02 682566 Schmoe, Joe
1 2009-07-02 244828 Doe, Joe
2 2009-07-11 325640 Black, Joe
3 2009-07-11 544440 Dirt, Joe
5 2009-07-16 200560 White, Joe
6 2009-07-16 685370 Purple, Joe
8 2009-07-16 635400 Red, Joe
9 2009-07-16 348562 Blue, Joe
与删除重复项的比较
:
>>> df.drop_duplicates(['REC','DATE'])
DATE REC NAME
0 2009-07-02 682566 Schmoe, Joe
1 2009-07-02 244828 Doe, Joe
2 2009-07-11 325640 Black, Joe
3 2009-07-11 544440 Dirt, Joe
5 2009-07-16 200560 White, Joe
6 2009-07-16 685370 Purple, Joe
8 2009-07-16 635400 Red, Joe
9 2009-07-16 348562 Blue, Joe
我认为
df2.drop\u duplicates(['id\u no','date'])
对你(或者你的识别号叫什么)很有用。展示一个数据集的例子会很有帮助,而且,你在使用多索引吗?嗯,我觉得自己像个白痴。。。删除重复项(['REC','DATE'])有效。。。然而,最初的问题仍然困扰着我,我相信同样的问题还会再次出现。数据样本来了。谢谢!没有想到在args中放两列。