7

Как получить значение из ячейки датафрейма?

1

Я создал условие, которое извлекает ровно одну строку из моего DataFrame:

d2 = df[(df['l_ext'] == l_ext) & (df['item'] == item) & (df['wn'] == wn) & (df['wd'] == 1)]

Теперь я хотел бы получить значение из определённого столбца:

val = d2['col_name']

Однако в результате я получаю DataFrame, содержащий одну строку и один столбец (т.е. одну ячейку). Это не то, что мне нужно. Мне нужно одно значение (одно число с плавающей запятой). Как я могу это сделать в pandas?

5 ответ(ов)

3

Вот быстрые методы доступа к скалярным значениям в DataFrame с использованием библиотеки pandas:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
print(df)

После создания DataFrame он будет выглядеть примерно так:

          A         B         C
0 -0.074172 -0.090626  0.038272
1 -0.128545  0.762088 -0.714816
2  0.201498 -0.734963  0.558397
3  1.563307 -1.186415  0.848246
4  0.205171  0.962514  0.037709

Чтобы получить доступ к конкретному значению (скалярному), вы можете использовать метод iat для доступа по числовым индексам:

value = df.iat[0, 0]
print(value)  # Вывод: -0.074171888537611502

Либо вы можете использовать метод at, который позволяет обращаться к элементам по меткам:

value = df.at[0, 'A']
print(value)  # Вывод: -0.074171888537611502

Оба метода обеспечивают быстрый доступ к элементам в DataFrame, но iat и at предназначены для доступа к отдельным элементам, в отличие от методов iloc и loc, которые могут использоваться для более широких выборок данных.

0

Вы можете получить значение из столбца col_name, где wd равно 1, с помощью следующего кода:

val = df.loc[df.wd == 1, 'col_name'].values[0]

Этот код ищет первую строку, где столбец wd равен 1, и извлекает соответствующее значение из столбца col_name. Обратите внимание, что это сработает только в том случае, если в выборке будет хотя бы одна строка, удовлетворяющая условию.

0

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

df.loc[1, :].values[0]

Этот код обращается к строке с индексом 1 и выбирает первое значение в этой строке. Такой подход отлично подходит для получения данных по индексам. Если вам нужно извлечь значение по имени столбца, вы можете сделать это более напрямую:

value = df.at[1, 'имя_столбца']

Замените 'имя_столбца' на нужное вам имя столбца. Это будет более читаемым способом, если вы знаете, какой именно столбец вам нужен.

0

Самые быстрые и простые способы, которые я нашел, следующие. Здесь 501 представляет собой индекс строки.

df.at[501, 'column_name']
df.get_value(501, 'column_name')

Если вам нужно получить значение из определенной ячейки DataFrame, используйте метод at, который оптимизирован для доступа к отдельным элементам. Метод get_value, хотя и менее предпочтителен, также может быть использован, если вы работаете с более старыми версиями pandas. Однако помните, что get_value был удален в последующих версиях, так что лучше использовать at.

0

В более поздних версиях вы можете исправить это просто следующим образом:

val = float(d2['col_name'].iloc[0])
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь