【发布时间】:2015-04-20 08:22:18
【问题描述】:
问题
我有一个由 380 行和 20 列组成的表格。我想根据特定条件从该表中删除行。
为了澄清事情,假设我有清单:
names = ['John', 'Amy', 'Daniel']
我想删除所有在列表names中找到姓名的人的数据。
例如,假设我的数据如下所示:
John 82 3.12 boy
Katy 12 1.12 girl
Amy 42 2.45 girl
Robert 32 1.56 boy
Daniel 47 2.10 boy
我想删除John、Amy和Daniel的数据。所以输出应该是:
Katy 12 1.12 girl
Robert 32 1.56 boy
尝试解决
import csv
import numpy as np
# loading data
data = np.genfromtxt('file.txt', dtype = None)
csvfile = "home/paula/Desktop/test.txt"
with open(csvfile, 'w') as output:
writer = csv.writer(output, delimiter = '\t')
for row in range(len(data)):
if data[row][0] == (i for i in names):
print 'removing the data of', i, '...'
else:
writer.writerow([data[row][0], data[row][1],
data[row][2], data[row][3]])
我的代码正在运行,但数据并未从我的原始数据中删除。当我打开新的test.txt文件时,可以看到数据没有被删除。
我确定错误在if data[row][0] == (i for i in names):
我该如何解决这个问题?
【问题讨论】:
-
data是什么?你在哪里定义它? -
@MrE,我没有错误,脚本工作正常。但是当我检查输出时,
test.txt文件,我可以看到我仍然有相同的数据。 -
@RafaelCardoso,我编辑了问题,我正在使用
np.genfromtxt加载数据
标签: python if-statement for-loop