[英]Getting a value from a specific row and column number in a csv file with Python
在下面的脚本中,我尝试获取存储在 csv 文件的第二行的第一列和第二列中的值。
例如下面的 csv 数据:
Appel, 21,high,yes
Pear, 23, high, no
Ananas, 14, low, no
使用下面的代码,我想在结果中获取信息“Pear”和“23”存储在第二行的第 1 列和第 2 列中。
import csv
with open ("data.csv", "r") as source:
reader = csv.reader(source)
data = []
for row in reader:
data.append(row)
result1 = data[2] [1]
result2 = data[2] [2]
print (result1, result2)
为了能够做到这一点,我首先将数据初始化为一个空列表。 然后,我通过循环设置第一次迭代。 我的 append 行,这是一个列表。 但是当我执行
result1 = data[2][1]
result2 = data[2][2]
我收到错误消息Index Error: list index out of range 。这可能是由于数据当前是长度为 1 的列表。但我不知道如何更改上面的代码。 你能帮我或给我一些建议来解决这个问题吗
de-dent 最后三行,使它们不在 for 循环中。
import csv
with open ("data.csv", "r") as source:
reader = csv.reader(source)
data = []
for row in reader:
data.append(row)
result1 = data[2] [1]
result2 = data[2] [2]
print (result1, result2)
或者
with open ("data.csv", "r") as source:
reader = csv.reader(source)
data = []
for row in reader:
data.append(row)
result1 = data[2] [1]
result2 = data[2] [2]
print (result1, result2)
如果您只需要第二行的信息,则不必遍历整个文件。
with open ("data.csv", "r") as source:
reader = csv.reader(source)
_ = next(reader) # throw the first line away
_ = next(reader) # throw this blank line away
result1, result2, *_ = next(reader)
print (result1, result2)
我将假设您的 csv 文件具有如下屏幕截图的格式。 这里有 2 种解决方案,一种使用您当前的逻辑,另一种使用 pandas。
'''
with open('help.csv', 'r') as source:
for row_number, row in enumerate(source.readlines()):
if row_number == 0:
continue
else:
data = row.split(',')
result1 = data[0]
result2 = data[1]
print(result1, result2)
'''
这是数据变量的样子:
['Apple', '21', 'high', 'yes\n']
['Pear', '23', 'high', 'no\n']
['bananas', '14', 'low', 'no\n']
2.) 使用 Pandas
如果您知道您想要梨(或第 1 列中的其他水果)
读入文件,state 你想要数据的水果
“切片”数据以获取水果出现在 column1 中的所有情况
获取我们想要的列中的值
'''
import pandas as pd
df = pd.read_csv("data.csv", headers=True) # make false if no headers
fruit = 'Pear'
data = df[df['Column1']==fruit] # gets all rows with this fruit
result2 = data['Column2'].values[0] # gets value in relevant column
print(fruit, result2)
'''
我们知道行索引并希望查看数据的情况
'''
import pandas as pd
df = pd.read_csv("data.csv", headers=True) # make false if no headers
row_number = 1
row = df.iloc[row_number,:]
print(row['Column1'], row['Column2']
''''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.