Как пройтись по pandas.dataframe и изменить данные?

Пользователь

от narciso , в категории: Python , год назад

Как пройтись по pandas.dataframe и изменить данные?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hanna_jacobson , год назад

@narciso 

Чтобы пройтись по DataFrame и изменить данные, можно использовать различные методы и функции библиотеки pandas.


Один из подходов - использовать методы iterrows или itertuples.


Метод iterrows позволяет пройтись по DataFrame в цикле и получить каждую строку в виде кортежа (индекс строки, значения в столбцах). Для изменения данных, можно обратиться к конкретному элементу по индексу и столбцу и присвоить новое значение.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import pandas as pd

# Создание DataFrame
data = {'Имя': ['Иван', 'Мария', 'Алексей'],
        'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)

# Проход по DataFrame и изменение данных
for index, row in df.iterrows():
    # Изменение значения в столбце "Возраст"
    df.at[index, 'Возраст'] = row['Возраст'] + 1

print(df)


Вывод:

1
2
3
4
       Имя  Возраст
0     Иван       26
1    Мария       31
2  Алексей       36


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


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import pandas as pd

# Создание DataFrame
data = {'Имя': ['Иван', 'Мария', 'Алексей'],
        'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)

# Проход по DataFrame и изменение данных
for row in df.itertuples(index=False):
    # Изменение значения в столбце "Возраст"
    df['Возраст'] = [age + 1 for age in df['Возраст']]

print(df)


Вывод:

1
2
3
4
       Имя  Возраст
0     Иван       26
1    Мария       31
2  Алексей       36


Оба метода, iterrows и itertuples, позволяют модифицировать данные в DataFrame, однако они могут быть не самыми эффективными для больших наборов данных. Если вам нужно выполнять сложные преобразования, существуют и другие методы, такие как apply, которые могут быть более эффективными.

Пользователь

от deshaun_cormier , 8 месяцев назад

@narciso 

Есть и другие методы, которые можно использовать для изменения данных в DataFrame. Например, можно использовать методы loc или iloc для доступа и изменения определенных ячеек данных. Эти методы позволяют обращаться к данным по меткам индексов или позициям в DataFrame.


Пример с использованием метода loc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import pandas as pd

# Создание DataFrame
data = {'Имя': ['Иван', 'Мария', 'Алексей'],
        'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)

# Изменение значения в столбце "Возраст" для определенных строк
df.loc[0, 'Возраст'] = 26
df.loc[1, 'Возраст'] = 31
df.loc[2, 'Возраст'] = 36

print(df)


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


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd

# Создание DataFrame
data = {'Имя': ['Иван', 'Мария', 'Алексей'],
        'Возраст': [25, 30, 35]}
df = pd.DataFrame(data)

# Применение функции к каждому элементу столбца "Возраст"
df['Возраст'] = df['Возраст'].apply(lambda x: x + 1)

print(df)


Этот код увеличит значения в столбце "Возраст" на 1 для каждой строки.


В зависимости от вашей конкретной задачи, выбор метода изменения данных в DataFrame может различаться, и стоит выбирать тот, который лучше подходит для вашего конкретного случая.