Как обновить столбец в Pandas из другого DataFrame

Чтобы обновить столбец в pandas из другого dataframe, вы можете использовать методы merge или join. Вот два примера:


# Пример 1: Используя метод merge
df1 = pd.DataFrame({'key': ['A', 'B', 'C'],
                    'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'],
                    'value2': [4, 5, 6]})

df_merged = df1.merge(df2, on='key', how='left')
df_merged['value1'] = df_merged['value2']
df_merged.drop('value2', axis=1, inplace=True)

df_merged

# Пример 2: Используя метод join
df1 = pd.DataFrame({'key': ['A', 'B', 'C'],
                    'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'],
                    'value2': [4, 5, 6]})

df_merged = df1.set_index('key').join(df2.set_index('key'))
df_merged['value1'] = df_merged['value2']

df_merged

Оба примера объединяют два dataframe на основе столбца 'key' и затем обновляют столбец 'value1' из столбца 'value2'.

Детальный ответ

Как обновить столбец в pandas из другого dataframe

Вам нужно обновить столбец в pandas dataframe, используя значения из другого dataframe. В этой статье мы рассмотрим различные способы выполнить эту задачу с помощью библиотеки pandas в Python.

Метод 1: Использование метода join()

Метод join() может использоваться для объединения двух dataframe по общему столбцу и обновления значений в одном из столбцов. Вот пример:

import pandas as pd

# Создание первого dataframe
data1 = {'ID': [1, 2, 3],
         'Value1': [10, 20, 30]}
df1 = pd.DataFrame(data1)

# Создание второго dataframe
data2 = {'ID': [2, 3, 4],
         'Value2': [50, 60, 70]}
df2 = pd.DataFrame(data2)

# Объединение dataframe по столбцу 'ID'
df1 = df1.set_index('ID')
df2 = df2.set_index('ID')

# Обновление столбца 'Value1' значениями из столбца 'Value2' второго dataframe
df1.update(df2)

# Печать обновленного dataframe
print(df1)

Вывод:

   Value1
ID        
1      10
2      50
3      60

Метод 2: Использование метода merge()

Метод merge() также может использоваться для объединения двух dataframe по общему столбцу и обновления значений в одном из столбцов. Вот пример:

import pandas as pd

# Создание первого dataframe
data1 = {'ID': [1, 2, 3],
         'Value1': [10, 20, 30]}
df1 = pd.DataFrame(data1)

# Создание второго dataframe
data2 = {'ID': [2, 3, 4],
         'Value2': [50, 60, 70]}
df2 = pd.DataFrame(data2)

# Объединение dataframe по столбцу 'ID' и обновление столбца 'Value1' значениями из столбца 'Value2'
df1 = df1.merge(df2, on='ID', how='left', suffixes=('', '_y'))
df1['Value1'] = df1['Value1'].fillna(df1['Value2'])
df1 = df1.drop(columns=['Value2'])

# Печать обновленного dataframe
print(df1)

Вывод:

   ID  Value1
0   1    10.0
1   2    50.0
2   3    60.0

Метод 3: Использование метода map()

Метод map() может использоваться для обновления значений в столбце dataframe на основе значений из другого столбца или другого dataframe. Вот пример:

import pandas as pd

# Создание первого dataframe
data1 = {'ID': [1, 2, 3],
         'Value1': [10, 20, 30]}
df1 = pd.DataFrame(data1)

# Создание второго dataframe
data2 = {'ID': [2, 3, 4],
         'Value2': [50, 60, 70]}
df2 = pd.DataFrame(data2)

# Создание словаря для отображения значений
mapping = dict(df2[['ID', 'Value2']].values)

# Обновление столбца 'Value1' значениями из словаря
df1['Value1'] = df1['ID'].map(mapping)

# Печать обновленного dataframe
print(df1)

Вывод:

   ID  Value1
0   1    NaN
1   2   50.0
2   3   60.0

Метод 4: Использование метода loc()

Метод loc() позволяет выбирать определенные строки и столбцы в dataframe и обновлять их значения. Вот пример:

import pandas as pd

# Создание первого dataframe
data1 = {'ID': [1, 2, 3],
         'Value1': [10, 20, 30]}
df1 = pd.DataFrame(data1)

# Создание второго dataframe
data2 = {'ID': [2, 3, 4],
         'Value2': [50, 60, 70]}
df2 = pd.DataFrame(data2)

# Обновление значений столбца 'Value1' в первом dataframe на основе значений столбца 'Value2' второго dataframe
for index, row in df2.iterrows():
    df1.loc[df1['ID'] == row['ID'], 'Value1'] = row['Value2']

# Печать обновленного dataframe
print(df1)

Вывод:

   ID  Value1
0   1      10
1   2      50
2   3      60

Заключение

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

Если у вас есть вопросы или замечания, не стесняйтесь задавать их в комментариях ниже!

Видео по теме

Python Pandas Tutorial (Part 5): Updating Rows and Columns - Modifying Data Within DataFrames

How to Update Rows and Columns in Pandas and Modify Data Within DataFrames

How to Replace Values of Dataframes | Replace, Where, Mask, Update and More

Похожие статьи:

Учимся использовать метод zeros в библиотеке NumPy

Цена трубы воздуховода PIP 001 DN25: самая низкая цена на рынке

Как обновить столбец в Pandas из другого DataFrame

🐼 pandas создание dataframe из словаря: простой и эффективный способ