Выбор данных из pandas DataFrame

Я определил панды DataFrame, учитывая количество строк (индекс) и столбцов. Я выполняю ряд операций и сохраняю данные в таком DataFrame. Код, выполняющий эту операцию, следующий:

import math
import numpy as np
import pandas as pd

sens_fac = [0.8, 1, 1.2]

A = 13;
B = 5;
C = 7/2;
D = 3*1.2;
par = [A,B,C,D]
data = pd.DataFrame(index=range(len(sens_fac)),columns=range(len(par)))

for i in range(len(par)):
    factors = [1, 1, 1, 1]
    for j in range(len(sens_fac)):
        factors[i] = sens_fac[j]
        print(factors)
        x=25
        t1 = np.log(x)**math.sin(x/(A*factors[0]))
        t2 = (B*factors[1])*math.sqrt(x)
        t3 = (factors[2]*C)**math.exp(1/x)
        t4 = x/(factors[3]*D)*2
        res = t1 + t2 + t3 + t4
        data[i][j] = res

Проблема в том, что я пытаюсь выбрать определенный элемент такого DataFrame. Например, если я печатаю данные, это будет DataFrame 3 строки и 4 столбца. Но когда я пытаюсь выбрать элемент третьей строки и четвертого столбца (data[2][3]), я получаю сообщение об ошибке. С другой стороны, если я выберу элемент как data[3][2], он даст мне искомое число, но я понимаю, что data[3][2] будет четвертой строкой и третьим столбцом, а это несуществующий элемент.

data.at[2,3] - это то, что вам нужно, так как прямой доступ к столбцам сначала в DataFrames.
asimoneau 13.05.2022 23:39

@asimoneau, но я не понимаю, первое число между [] относится к строкам, а второе число между [] относится к столбцам, не так ли?

nekovolta 13.05.2022 23:42

Это сбивает с толку, потому что вы используете числовые метки. data['a'] будет столбцом 'a' вашего DataFrame. Таким образом, data[2][3] возвращает индекс элемента 3 столбца 2.

asimoneau 13.05.2022 23:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Доступ к значениям фрейма данных можно получить с помощью явной индексации (loc), неявной индексации (iloc). Для большей ясности: предположим, что столбец 3 имеет имя «qwe», а индекс строки 2 будет «c». Это называется явной ссылкой на индексы.

data.loc['c', 'qwe']

Неявно вы можете применить это так:

data.iloc[2, 3]

Но, если вы будете использовать ломтик. Тогда при явном индексировании будет еще одно значение, так как при явном индексировании срез происходит включительно.

print(data.loc[:2, 3])
print(data.iloc[:2, 3])
"""
0    49.0406
1    45.5684
2    43.2536
Name: 3, dtype: object
0    49.0406
1    45.5684
Name: 3, dtype: object
"""

Поскольку у вас есть индексы (строки) в строгой нумерации, использование явного и неявного индекса приведет к одному и тому же результату.

print(data.loc[2, 3])#43.2535547215997
print(data.iloc[2, 3])#43.2535547215997

iloc, loc и at, iat разница описана здесь

Для одиночных значений предполагается, что быстрее at, iat.

Другие вопросы по теме