Python 保留第一行并删除下一个重复行
我想保留副本集中的第一行。我还试图附加当前的输入文件。我的疑问是,如果同时删除副本和附加相同的文件,是否可能?如果是这样,那么下面引用熊猫文档的代码不起作用 输入:Python 保留第一行并删除下一个重复行,python,python-2.7,csv,pandas,duplicates,Python,Python 2.7,Csv,Pandas,Duplicates,我想保留副本集中的第一行。我还试图附加当前的输入文件。我的疑问是,如果同时删除副本和附加相同的文件,是否可能?如果是这样,那么下面引用熊猫文档的代码不起作用 输入: ,id_merged,time_1,time_2,gps_1or3,gps_2or4 0,00022d9064bc,1073260801,1073260803,819251,440006 #duplicate_keep 1,00022d9064bc,1073260801,1073260803,819251,440006 #dupli
,id_merged,time_1,time_2,gps_1or3,gps_2or4
0,00022d9064bc,1073260801,1073260803,819251,440006 #duplicate_keep
1,00022d9064bc,1073260801,1073260803,819251,440006 #duplicate_remove
2,00022d9064bc,1073260801,1073260803,819251,440006 #duplicate_remove
3,00022d9064bc,1073260801,1073260803,819251,440006 #duplicate_remove
4,00022d9064bc,1073260803,1073260810,819213,439954
5,00904b4557d3,1073260803,1073261920,817526,439458
6,00022de73863,1073260804,1073265410,817558,439525
7,00904b14b494,1073260804,1073262625,817558,439525
8,00904b14b494,1073260804,1073265163,817558,439525
9,00904b14b494,1073260804,1073263786,817558,439525
10,00022d1406df,1073260807,1073260809,820428,438735
0,00022d9064bc,1073260801,1073260803,819251,440006
1,00022dba8f51,1073260801,1073260803,819251,440006
2,00022de1c6c1,1073260801,1073260803,819251,440006
3,003065f30f37,1073260801,1073260803,819251,440006
4,00904b48a3b6,1073260801,1073260803,819251,440006
5,00904b83a0ea,1073260803,1073260810,819213,439954
6,00904b85d3cf,1073260803,1073261920,817526,439458
7,00904b14b494,1073260804,1073265410,817558,439525
8,00904b99499c,1073260804,1073262625,817558,439525
9,00904bb96e83,1073260804,1073265163,817558,439525
10,00904bf91b75,1073260804,1073263786,817558,439525
预期输出:索引=无,标题=无
00022d9064bc,1073260801,1073260803,819251,440006
00022d9064bc,1073260803,1073260810,819213,439954
00904b4557d3,1073260803,1073261920,817526,439458
00022de73863,1073260804,1073265410,817558,439525
00904b14b494,1073260804,1073262625,817558,439525
00022d1406df,1073260807,1073260809,820428,438735
00022d9064bc,1073260801,1073260803,819251,440006
00022dba8f51,1073260801,1073260803,819251,440006
00022de1c6c1,1073260801,1073260803,819251,440006
003065f30f37,1073260801,1073260803,819251,440006
00904b48a3b6,1073260801,1073260803,819251,440006
00904b83a0ea,1073260803,1073260810,819213,439954
00904b85d3cf,1073260803,1073261920,817526,439458
00904b14b494,1073260804,1073265410,817558,439525
00904b99499c,1073260804,1073262625,817558,439525
00904bb96e83,1073260804,1073265163,817558,439525
00904bf91b75,1073260804,1073263786,817558,439525
匹配行中的每个元素,如果整行重复,则保留第一行并删除其余重复行
代码:
编辑一个:
import csv
import pandas as pd
df = pd.read_csv('dart_small_final.csv', index_col=[0], header=[' ','id_merged','time_1','time_2','gps_1or3','gps_2or4'])
df.drop_duplicates(keep=first, inplace=True)
df.reset_index(drop=True, inplace=True)
df.to_csv('dart_final.csv', header=None, index=None)
错误:
Traceback (most recent call last):
File "remove_dup.py", line 4, in <module>
df = pd.read_csv('dart_small_final.csv', index_col=[0], header=[' ','id_merged','time_1','time_2','gps_1or3','gps_2or4'])
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 562, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 315, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 645, in __init__
self._make_engine(self.engine)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 799, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1213, in __init__
self._reader = _parser.TextReader(src, **kwds)
File "pandas/parser.pyx", line 504, in pandas.parser.TextReader.__cinit__ (pandas/parser.c:4950)
TypeError: cannot concatenate 'str' and 'int' objects
回溯(最近一次呼叫最后一次):
文件“remove_dup.py”,第4行,在
df=pd.read\u csv('dart\u small\u final.csv',index\u col=[0],header=['','id\u merged','time\u 1','time\u 2','gps\u 1or3','gps\u 2or4'])
parser\u f中的文件“/usr/local/lib/python2.7/dist packages/pandas/io/parsers.py”,第562行
返回读取(文件路径或缓冲区,kwds)
文件“/usr/local/lib/python2.7/dist packages/pandas/io/parsers.py”,第315行,已读
parser=TextFileReader(文件路径或缓冲区,**kwds)
文件“/usr/local/lib/python2.7/dist packages/pandas/io/parsers.py”,第645行,在__
自制发动机(自制发动机)
文件“/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py”,第799行,在引擎中
self.\u engine=CParserWrapper(self.f,**self.options)
文件“/usr/local/lib/python2.7/dist packages/pandas/io/parsers.py”,第1213行,在__
self.\u reader=\u parser.textleader(src,**kwds)
文件“pandas/parser.pyx”,第504行,位于pandas.parser.TextReader.\u u cinit\uuuuuu(pandas/parser.c:4950)中
TypeError:无法连接'str'和'int'对象
您需要添加参数inplace=True
:
import pandas as pd
import io
temp=u""",id_merged,time_1,time_2,gps_1or3,gps_2or4
0,00022d9064bc,1073260801,1073260803,819251,440006
1,00022d9064bc,1073260801,1073260803,819251,440006
2,00022d9064bc,1073260801,1073260803,819251,440006
3,00022d9064bc,1073260801,1073260803,819251,440006
4,00022d9064bc,1073260803,1073260810,819213,439954
5,00904b4557d3,1073260803,1073261920,817526,439458
6,00022de73863,1073260804,1073265410,817558,439525
7,00904b14b494,1073260804,1073262625,817558,439525
8,00904b14b494,1073260804,1073265163,817558,439525
9,00904b14b494,1073260804,1073263786,817558,439525
10,00022d1406df,1073260807,1073260809,820428,438735
0,00022d9064bc,1073260801,1073260803,819251,440006
1,00022dba8f51,1073260801,1073260803,819251,440006
2,00022de1c6c1,1073260801,1073260803,819251,440006
3,003065f30f37,1073260801,1073260803,819251,440006
4,00904b48a3b6,1073260801,1073260803,819251,440006
5,00904b83a0ea,1073260803,1073260810,819213,439954
6,00904b85d3cf,1073260803,1073261920,817526,439458
7,00904b14b494,1073260804,1073265410,817558,439525
8,00904b99499c,1073260804,1073262625,817558,439525
9,00904bb96e83,1073260804,1073265163,817558,439525
10,00904bf91b75,1073260804,1073263786,817558,439525"""
谢谢你的回答。我确实做了你提到的更改,但我得到了错误。制作了一个编辑部分。我认为如果
csv
有标题,使用df=pd.read\u csv('input.csv',index\u col=0)
,如果不添加参数names
-df=pd.read\u csv('input.csv',index\u col 0,names=['','id\u merged','time\u 1','time\u 2','gps\u 1or3','gps\u r2o4']))
。它有标题和索引,如输入部分所示。这一部分也需要一些指导。。提前谢谢
import pandas as pd
import io
temp=u""",id_merged,time_1,time_2,gps_1or3,gps_2or4
0,00022d9064bc,1073260801,1073260803,819251,440006
1,00022d9064bc,1073260801,1073260803,819251,440006
2,00022d9064bc,1073260801,1073260803,819251,440006
3,00022d9064bc,1073260801,1073260803,819251,440006
4,00022d9064bc,1073260803,1073260810,819213,439954
5,00904b4557d3,1073260803,1073261920,817526,439458
6,00022de73863,1073260804,1073265410,817558,439525
7,00904b14b494,1073260804,1073262625,817558,439525
8,00904b14b494,1073260804,1073265163,817558,439525
9,00904b14b494,1073260804,1073263786,817558,439525
10,00022d1406df,1073260807,1073260809,820428,438735
0,00022d9064bc,1073260801,1073260803,819251,440006
1,00022dba8f51,1073260801,1073260803,819251,440006
2,00022de1c6c1,1073260801,1073260803,819251,440006
3,003065f30f37,1073260801,1073260803,819251,440006
4,00904b48a3b6,1073260801,1073260803,819251,440006
5,00904b83a0ea,1073260803,1073260810,819213,439954
6,00904b85d3cf,1073260803,1073261920,817526,439458
7,00904b14b494,1073260804,1073265410,817558,439525
8,00904b99499c,1073260804,1073262625,817558,439525
9,00904bb96e83,1073260804,1073265163,817558,439525
10,00904bf91b75,1073260804,1073263786,817558,439525"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), index_col=0)
print (df)
id_merged time_1 time_2 gps_1or3 gps_2or4
0 00022d9064bc 1073260801 1073260803 819251 440006
1 00022d9064bc 1073260801 1073260803 819251 440006
2 00022d9064bc 1073260801 1073260803 819251 440006
3 00022d9064bc 1073260801 1073260803 819251 440006
4 00022d9064bc 1073260803 1073260810 819213 439954
5 00904b4557d3 1073260803 1073261920 817526 439458
6 00022de73863 1073260804 1073265410 817558 439525
7 00904b14b494 1073260804 1073262625 817558 439525
8 00904b14b494 1073260804 1073265163 817558 439525
9 00904b14b494 1073260804 1073263786 817558 439525
10 00022d1406df 1073260807 1073260809 820428 438735
0 00022d9064bc 1073260801 1073260803 819251 440006
1 00022dba8f51 1073260801 1073260803 819251 440006
2 00022de1c6c1 1073260801 1073260803 819251 440006
3 003065f30f37 1073260801 1073260803 819251 440006
4 00904b48a3b6 1073260801 1073260803 819251 440006
5 00904b83a0ea 1073260803 1073260810 819213 439954
6 00904b85d3cf 1073260803 1073261920 817526 439458
7 00904b14b494 1073260804 1073265410 817558 439525
8 00904b99499c 1073260804 1073262625 817558 439525
9 00904bb96e83 1073260804 1073265163 817558 439525
10 00904bf91b75 1073260804 1073263786 817558 439525
df.drop_duplicates(keep='first', inplace=True)
#or assign output to df
#df = df.drop_duplicates(keep='first')
df.reset_index(drop=True, inplace=True)
print (df)
id_merged time_1 time_2 gps_1or3 gps_2or4
0 00022d9064bc 1073260801 1073260803 819251 440006
1 00022d9064bc 1073260803 1073260810 819213 439954
2 00904b4557d3 1073260803 1073261920 817526 439458
3 00022de73863 1073260804 1073265410 817558 439525
4 00904b14b494 1073260804 1073262625 817558 439525
5 00904b14b494 1073260804 1073265163 817558 439525
6 00904b14b494 1073260804 1073263786 817558 439525
7 00022d1406df 1073260807 1073260809 820428 438735
8 00022dba8f51 1073260801 1073260803 819251 440006
9 00022de1c6c1 1073260801 1073260803 819251 440006
10 003065f30f37 1073260801 1073260803 819251 440006
11 00904b48a3b6 1073260801 1073260803 819251 440006
12 00904b83a0ea 1073260803 1073260810 819213 439954
13 00904b85d3cf 1073260803 1073261920 817526 439458
14 00904b14b494 1073260804 1073265410 817558 439525
15 00904b99499c 1073260804 1073262625 817558 439525
16 00904bb96e83 1073260804 1073265163 817558 439525
17 00904bf91b75 1073260804 1073263786 817558 439525