0

我刚刚开始使用 python,并且正在努力从数据框末尾的第一列中提取一个值。

所以假设我有一个包含 3 列的 .csv 文件:

id,name,country
1,bob,USA
2,john,Brazil
3,brian,austria

我正在尝试从 ID 列中提取“3”(最后一行 ID 值)

fileName=open('data.csv')
reader=csv.reader(fileName,delimiter=',')
count=0
for row in reader:
     count=count+1

我能够获取行数,但不确定如何从该特定列中获取值

4

4 回答 4

2

这应该做的工作:

import csv

fileName=open('123.csv')
reader=csv.reader(fileName,delimiter=',')
count=0
for row in reader:
     if count == 3:
        print(row[0])
     count=count+1

但最好通过以下方式导入熊猫并将您的 csv 文件转换为数据框:

import csv
import pandas as pd

fileName=open('123.csv')
reader=csv.reader(fileName,delimiter=',')

df = pd.DataFrame(reader)
print(df.loc[3][0])

抓住你想要的任何元素会更容易。

使用loc,您可以使用行号和列号访问任何元素,例如您想获取位于第 3 行第 0 列的元素 3,因此您只需通过df.loc[3][0]

如果您没有安装 pandas,请使用以下命令在命令提示符下安装它:

pip install pandas
于 2019-10-02T18:11:43.700 回答
1

鉴于您从 Python 开始,并查看提供的代码,我认为这个 Idiomatic Python 视频将非常有帮助。将代码转换为漂亮、惯用的 Python | 雷蒙德·海廷格

除了下面引用的 pandas 文档之外,此摘要也非常有用: Select rows in pandas MultiIndex DataFrame

Pandas 索引文档: https ://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

于 2019-10-02T20:43:51.280 回答
1

我发现你的问题有点模棱两可,所以我正在回答这两种情况。

如果您需要第一列,第三行值:

value = None
with open('data.csv') as fileName:
    reader = csv.reader(fileName, delimiter=',')
    for row_number, row in enumerate(reader, 1):
        if row_number == 3:
            value = row[0]

如果您需要第一列,最后一行的值:

value = None
with open('data.csv') as fileName:
    reader = csv.reader(fileName, delimiter=',')
    for row in reader:
        value = row[0]

在这两种情况下,value都有你想要的价值。

于 2019-10-02T18:14:45.967 回答
1

如评论中所述,df['id'].iloc[-1]将返回 DataFrame 中的最后一个 id 值,在这种情况下,这就是您想要的。

您还可以根据其他行中的值进行访问。例如:

df.id[(df.name == 'brian')]也会给你一个 3 的值,因为 brian 是与 id 为 3 相关联的名称。

您也不必遍历 DataFrame 行来获取大小,但是当您加载 DataFrame 时,可以简单地执行count = df.shape[0]这将返回行数。

于 2019-10-02T18:16:22.580 回答