конкретное значение для доступа к Python в кадре данных pandas - PullRequest
0 голосов
/ 02 октября 2019

Я только начинаю работать с python и пытаюсь извлечь значение из моего первого столбца, в конце кадра данных.

так что, скажем, у меня есть файл .csv с 3 столбцами:

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

Я пытаюсь извлечь '3' из столбца ID (значение идентификатора последней строки)

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

Я могу получить количество строк, но не уверен, какполучить значение из этого конкретного столбца

Ответы [ 4 ]

1 голос
/ 02 октября 2019

Учитывая, что вы начинаете с Python и просматриваете предоставленный код, я думаю, что это видео с идиоматическим Python будет очень полезным. Превращение кода в красивый идиоматический Python |Раймонд Хеттингер

В дополнение к документации для панд, на которую есть ссылки ниже, это резюме также очень полезно: Выбор строк в пандах MultiIndex DataFrame .

Документация по индексированию панд:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

1 голос
/ 02 октября 2019

Я нашел ваш вопрос несколько двусмысленным, поэтому отвечаю на оба случая.

Если вам нужен первый столбец, третий ряд значение:

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 имеет желаемое значение.

1 голос
/ 02 октября 2019

Как упомянуто в комментариях df['id'].iloc[-1] вернет последнее значение идентификатора в кадре данных, что в данном случае является тем, что вы хотите.

Вы также можете получить доступ на основе значений в других строках. Например:

df.id[(df.name == 'brian')] также даст вам значение 3, потому что brian - это имя, связанное с идентификатором 3.

Вам также не нужно циклически проходить по строкам DataFrame. чтобы получить размер, но когда у вас есть загруженный DataFrame, можно просто сделать count = df.shape[0], который вернет количество строк.

1 голос
/ 02 октября 2019

это должно сделать работу:

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, который находится в строке 3, столбец 0,так что вы просто берете его по df.loc[3][0]

, если у вас не установлены панды, установите его в командной строке с помощью команды:

pip install pandas
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...