Представим, что у нас есть DataFrame df с информац...

Created on: December 24, 2025

Answered using GPT-5.2 Thinking by Chat01

Question

Представим, что у нас есть DataFrame df с информацией о продажах товаров в интернет-магазине.

Задача состоит в том, чтобы вывести информацию об индексе DataFrame, включая его название, тип данных, количество элементов, форму и значения индекса каждую с новой строки в формате представленном в примере.

Если бы DataFrame был таким

temperature humidity
№ п/п
0 22 50
1 23 55
2 24 60
3 21 65
4 20 70
5 20 72
6 19 75

то ваша программа должна была бы вывести следующее

Имя индекса: № п/п
Тип данных индекса: int64
Количество элементов: 7
Форма объекта Index: (7,)
Значения индексов: [0 1 2 3 4 5 6]

Thought

Providing Python solution for DataFrame index info

User asks for a Python code to

Thought for 5s

Answer

python
# df — ваш DataFrame idx = df.index print(f"Имя индекса: {idx.name}") print(f"Тип данных индекса: {idx.dtype}") print(f"Количество элементов: {idx.size}") # или len(idx) print(f"Форма объекта Index: {idx.shape}") print(f"Значения индексов: {idx.values}")

Question

как создать новый датафрейм и в цикле его запролнять

Answer

Вот несколько нормальных способов создать новый DataFrame и заполнять его в цикле (с примерами). Важно: не добавляйте строки в DataFrame по одной через df.loc[len(df)] = ... на больших данных — это медленно. Лучше собирать данные в список, а потом делать DataFrame.

Вариант 1 (лучший): копить строки в списке словарей, потом pd.DataFrame

python
import pandas as pd rows = [] # сюда будем складывать строки for i in range(7): rows.append({ "temperature": 20 + i, "humidity": 50 + 5*i }) new_df = pd.DataFrame(rows) print(new_df)

Вариант 2: копить в списке списков + отдельно колонки

python
import pandas as pd data = [] for i in range(7): data.append([20 + i, 50 + 5*i]) new_df = pd.DataFrame(data, columns=["temperature", "humidity"]) print(new_df)

Вариант 3: если хотите сразу задавать индекс при заполнении

python
import pandas as pd rows = [] index_vals = [] for i in range(7): rows.append({"temperature": 20 + i, "humidity": 50 + 5*i}) index_vals.append(i) # ваш индекс new_df = pd.DataFrame(rows, index=index_vals) new_df.index.name = "№ п/п" print(new_df)

Вариант 4 (простой, но медленный): дописывать в DataFrame внутри цикла

Подходит только для маленьких объёмов.

python
import pandas as pd new_df = pd.DataFrame(columns=["temperature", "humidity"]) for i in range(7): new_df.loc[i] = [20 + i, 50 + 5*i] new_df.index.name = "№ п/п" print(new_df)

Если скажете, что именно вы заполняете (из другого df? из файла? считаете агрегаты по товарам?), я покажу самый подходящий шаблон под ваш кейс.

Question

Создайте функцию return_filtered_df(df, lst), которая принимает DataFrame df и список lst и возвращает DataFrame, который содержит строки исходного df, названия которых присутствуют в списке lst.

Например, для данного DataFrame:

name age
0 Alice 25
1 Bob 32
2 Charlie 18
3 David 47
4 Emily 22

и для списка lst = [2, 5, 8], функция return_filtered_df(df, lst) вернула бы следующий DataFrame

name age
2 Charlie 18

Функция должна сохранять порядок следования строк в исходном DataFrame.

Answer

python
import pandas as pd def return_filtered_df(df: pd.DataFrame, lst: list): # оставляем только те метки индекса, которые реально есть в df.index # порядок сохраняется как в исходном df return df.loc[df.index.intersection(lst)]

Пример:

python
df = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David", "Emily"], "age": [25, 32, 18, 47, 22] }) lst = [2, 5, 8] print(return_filtered_df(df, lst))

Вывод:

text
name age 2 Charlie 18

Question

У вас есть DataFrame orders, содержащий информацию о заказах в интернет-магазине. Индексами в этом DataFrame являются номера заказов в виде строковых значений, например, "ORD12345". Однако, после реорганизации бизнес-процессов в компании, номера заказов стали присваиваться в виде числовых значений, начиная с 1. Вам необходимо переименовать индексы в orders таким образом, чтобы они соответствовали новому формату номеров заказов. Значения в ячейках DataFrame при этом должны сохраниться.

Sample Input:

Sample Output:

product  price

1 product1 100
2 product2 200
3 product3 150
4 product4 300

Answer

Чтобы заменить строковые индексы вида "ORD12345" на новые числовые 1..N, не трогая данные в таблице, просто переназначьте индекс:

python
# orders — исходный DataFrame orders.index = range(1, len(orders) + 1)

После этого orders будет выглядеть как в примере (индексы 1, 2, 3, 4, …), а значения в ячейках сохранятся.

Share this Q&A