我有一个CSV文件,如下所示:
2,2,2
3,3,3
4,4,4
6,6,6
.,.,.
.,.,.
3
列,n
行
如果最后一列中的值相同,我想一次检查两行。
有人知道如何编程吗?
答案 0 :(得分:0)
(我使用StringIO
来模拟文件)
使用两个循环来比较任何两行:
data = '''2,2,2
3,3,3
6,6,6
0,0,3
4,4,4
0,0,6'''
from StringIO import StringIO
import csv
#f = open('filename.csv')
#csv_reader = csv.reader(f)
csv_reader = csv.reader(StringIO(data))
rows = list(csv_reader)
#print rows
for index_a, a in enumerate(rows[:-1]):
for index_b, b in enumerate(rows[index_a+1:], index_a+1):
if a[2] == b[2] :
print "the same:", index_a, index_b, a, b
结果
the same: 1 3 ['3', '3', '3'] ['0', '0', '3']
the same: 2 5 ['6', '6', '6'] ['0', '0', '6']
编辑:使用pandas
data = '''2,2,2
3,3,3
6,6,6
0,0,3
4,4,4
0,0,6'''
from StringIO import StringIO
import pandas as pd
df = pd.DataFrame.from_csv(StringIO(data), index_col=None, header=None)
print '\n all rows \n'
print df
print '\n group by column 2 \n'
for name, gr in df.groupby(2):
print '\n name: %s \n' % name
print gr
print 'indexes:', gr.index
结果:
all rows
0 1 2
0 2 2 2
1 3 3 3
2 6 6 6
3 0 0 3
4 4 4 4
5 0 0 6
group by column 2
name: 2
0 1 2
0 2 2 2
indexes: Int64Index([0], dtype='int64')
name: 3
0 1 2
1 3 3 3
3 0 0 3
indexes: Int64Index([1, 3], dtype='int64')
name: 4
0 1 2
4 4 4 4
indexes: Int64Index([4], dtype='int64')
name: 6
0 1 2
2 6 6 6
5 0 0 6
indexes: Int64Index([2, 5], dtype='int64')