У меня есть CSV-файл с разделителями табуляции. Мой CSV-файл:
0.227996254681648 0.337028824833703 0.238163571416268 0.183009231781289 0.085746697332588 0.13412895376826
0.247891283973758 0.335555555555556 0.272129379268419 0.187328622765857 0.085921240923626 0.128372465534807
0.264761012183693 0.337777777777778 0.245917821271498 0.183211905363232 0.080493183753814 0.122786059549795
0.30506091846298 0.337777777777778 0.204265153911403 0.208453197418743 0.0715575291087 0.083682658454807
0.222748815165877 0.337028824833703 0.209714942778068 0.084252659537679 0.142013573559938 0.234672985858848
Теперь я хотел бы ввести каждую строку из файла csv, сделать что-то с каждым элементом каждой строки, а затем сделать то же самое для следующей строки и так далее.
Мой код:
lines = []
with open("/path/testfile.csv") as f:
csvReader = csv.reader( f, delimiter = "\t" )
for row in csvReader:
x=row[0] #access first floating number of each line from csv
y=row[1] #access second floating number of each line from csv
z=row[2] #access third floating number of each line from csv
r=row[3] #access fourth floating number of each line from csv
s=row[4] #access fifth floating number of each line from csv
t=row[5] #access six floating number of each line from csv
#do something else with each element
Здесь я включил только print(row[0])
в цикл for
:
lines = []
with open("/path/testfile.csv") as f:
csvReader = csv.reader( f, delimiter = "\t" )
for row in csvReader:
print(row[0])
Но когда уже пробуешь только print(row[0])
, то уже выводит все значения из csv файла. Как я могу получить доступ к каждому элементу из каждой строки в python?
просто добавьте еще один цикл:
lines = []
with open("/path/testfile.csv") as f:
csvReader = csv.reader( f, delimiter = " " )
for row in csvReader:
for element in row:
do_something_with(element)
Привет, спасибо, но тогда он печатает только 0
при использовании print(element[0])
. Таким образом, он получает доступ только к 0
каждого первого элемента в каждой строке. Как я могу получить доступ ко всему номеру?
Как я уже заметил, вы, ребята, используете неправильный разделитель. " " != "\t"
. Вам нужно "\t"
.
Это не имеет значения. Я использовал "\t"
сейчас, но это дает тот же результат...
@ Luker354 Luker354, вы уверены, что файл, который вы читаете, на самом деле разделен табуляцией?
Да, я совершенно уверен
Не уверен, что вы знакомы с библиотекой панды. Вы можете использовать панд, которые сильно упростят ситуацию.
import pandas as pd
df = pd.read_csv('./data/data.csv', delimiter='\t', header=None)
print(df)
0 1 2 3 4 5
0 0.227996 0.337029 0.238164 0.183009 0.085747 0.134129
1 0.247891 0.335556 0.272129 0.187329 0.085921 0.128372
2 0.264761 0.337778 0.245918 0.183212 0.080493 0.122786
3 0.305061 0.337778 0.204265 0.208453 0.071558 0.083683
4 0.222749 0.337029 0.209715 0.084253 0.142014 0.234673
Затем вы можете выполнить любую операцию, которую хотите, в любом столбце. Пример :
df[0] = df[0]*10 # Multiply all numbers in the 0th column by 10
Я рекомендую взглянуть на библиотеку pandas, это хорошая отправная точка.
Гид пользователя. Это позволит вам легко обрабатывать и обрабатывать ваши данные проще.
Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Обычно вы устанавливаете разделитель как
delimiter = "\t"
для файлов, разделенных табуляцией.