Python 删除CSV文件中不需要的行
我是Python新手,在删除csv文件中不需要的行时遇到问题。例如,我有3列和很多行:Python 删除CSV文件中不需要的行,python,Python,我是Python新手,在删除csv文件中不需要的行时遇到问题。例如,我有3列和很多行: A B C hi 1.0 5 hello 2.0 6 ok 3.0 7 我使用numpy(而不是csv)加载数据 我想为第二列介绍一个范围 b=np.arange(0, 2.1,0.1) 我不知道该如何使用那段代码 我想要的最终输出如下: A B C hi 1.0 5 hello 2.0 6 最后一行将被删除,因为我为
A B C
hi 1.0 5
hello 2.0 6
ok 3.0 7
我使用numpy(而不是csv)加载数据
我想为第二列介绍一个范围
b=np.arange(0, 2.1,0.1)
我不知道该如何使用那段代码
我想要的最终输出如下:
A B C
hi 1.0 5
hello 2.0 6
最后一行将被删除,因为我为第二列选择的范围仅为2.0。我不知道如何才能做到这一点。您可以使用逻辑索引来完成
index = (x[:, 1] <= 2.0)
仅选择满足此条件的行可以使用逻辑索引
index = (x[:, 1] <= 2.0)
仅选择满足此条件的行尝试使用熊猫:
import pandas as pd
a = pd.read_csv('data.csv', index_col=0) # column A will be the index.
a
B C
A
hi 1 5
hello 2 6
ok 3 7
对于B的每一个值,最大为2:
a[a.B <= 2]
B C
A
hi 1 5
hello 2 6
a[a.B尝试熊猫:
import pandas as pd
a = pd.read_csv('data.csv', index_col=0) # column A will be the index.
a
B C
A
hi 1 5
hello 2 6
ok 3 7
对于B的每一个值,最大为2:
a[a.B <= 2]
B C
A
hi 1 5
hello 2 6
a[a.B您可以只使用csv模块。N.B以下要求csv字段是逗号分隔的,而不是制表符分隔的(如您的示例所示)
更新要求后编辑
在列“C”上有额外限制,例如值必须大于等于6
import csv
import numpy as np
allowed_values_B = np.arange(0, 2.1, 0.1)
def accept_row(row):
return (float(row[1]) in allowed_values_B) and (int(row[2]) >= 6)
with open('data.csv') as data:
reader = csv.reader(data)
field_names = next(reader)
filtered_rows = [row for row in reader if accept_row(row)]
>>> filtered_rows
[['hello', '2.0', '6']]
您可以只使用csv模块。N.B以下要求csv字段是逗号分隔的,而不是制表符分隔的(如您的示例所示)
更新要求后编辑
在列“C”上有额外限制,例如值必须大于等于6
import csv
import numpy as np
allowed_values_B = np.arange(0, 2.1, 0.1)
def accept_row(row):
return (float(row[1]) in allowed_values_B) and (int(row[2]) >= 6)
with open('data.csv') as data:
reader = csv.reader(data)
field_names = next(reader)
filtered_rows = [row for row in reader if accept_row(row)]
>>> filtered_rows
[['hello', '2.0', '6']]
我只需要输入a[a.B是的,使用Pandas,您可以使用其名称访问列。因此a.B我只需要输入a[a.B是的,使用Pandas,您可以使用其名称访问列。因此a.B我得到以下错误:“ValueError:无法将输入数组从形状(997)广播到形状(1000)”我得到以下错误:“ValueError:无法将输入数组从形状(997)广播到形状(1000)”谢谢!这一个可以工作,但我也将为第三列提供一个不同的截止值。这可以工作吗?过滤的_行2=[如果允许的_值中浮动(行[2]),则读卡器中的行对应于行]@justin您的意思是完全独立的行视图,以便为列B筛选行B(满足一个条件)和单独筛选行C(满足第二个条件)?…或者你是说只有一行过滤的_行同时满足这两个条件?@mhwake:我想要一行过滤的_行同时满足这两个条件。:)谢谢!这一行可以工作,但我也会为第三列提供一个不同的截止值。这行可以工作吗?过滤的_行2=[读卡器中的行如果在允许的_值中浮动(行[2])@justin您是指完全独立的行视图,以便为列B筛选行B(满足一个条件)和为列C筛选行C(满足第二个条件)?…还是指仅一个同时满足两个条件的筛选行?@mhwake:我想要1个同时满足两个条件的筛选行。:)
import csv
import numpy as np
allowed_values_B = np.arange(0, 2.1, 0.1)
def accept_row(row):
return (float(row[1]) in allowed_values_B) and (int(row[2]) >= 6)
with open('data.csv') as data:
reader = csv.reader(data)
field_names = next(reader)
filtered_rows = [row for row in reader if accept_row(row)]
>>> filtered_rows
[['hello', '2.0', '6']]