Представим, что у нас есть DataFrame df с информац...
Criado em: 24 de dezembro de 2025
Respondido usando GPT-5.2 Thinking por Chat01
Criado em: 24 de dezembro de 2025
Respondido usando GPT-5.2 Thinking por Chat01
Представим, что у нас есть 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]
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}")
как создать новый датафрейм и в цикле его запролнять
Вот несколько нормальных способов создать новый DataFrame и заполнять его в цикле (с примерами). Важно: не добавляйте строки в DataFrame по одной через df.loc[len(df)] = ... на больших данных — это медленно. Лучше собирать данные в список, а потом делать DataFrame.
pd.DataFramepythonimport 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)
pythonimport 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)
pythonimport 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)
Подходит только для маленьких объёмов.
pythonimport 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? из файла? считаете агрегаты по товарам?), я покажу самый подходящий шаблон под ваш кейс.
Создайте функцию 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.
pythonimport pandas as pd def return_filtered_df(df: pd.DataFrame, lst: list): # оставляем только те метки индекса, которые реально есть в df.index # порядок сохраняется как в исходном df return df.loc[df.index.intersection(lst)]
Пример:
pythondf = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David", "Emily"], "age": [25, 32, 18, 47, 22] }) lst = [2, 5, 8] print(return_filtered_df(df, lst))
Вывод:
textname age 2 Charlie 18
У вас есть 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
Чтобы заменить строковые индексы вида "ORD12345" на новые числовые 1..N, не трогая данные в таблице, просто переназначьте индекс:
python# orders — исходный DataFrame orders.index = range(1, len(orders) + 1)
После этого orders будет выглядеть как в примере (индексы 1, 2, 3, 4, …), а значения в ячейках сохранятся.