• Автор записи:
  • Рубрика записи:Pandas
  • Время чтения:4 минут чтения
  • Комментарии к записи:0 комментариев

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

Давайте рассмотрим их все по одному подробно с помощью нескольких примеров.

Содержание

1. Используя метод Concat

Метод Concat в Pandas используется для объединения двух кадров данных на основе их общего индекса или столбца.

Пример:

import pandas as pd

Employee_name = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
Employee_age = pd.DataFrame({'ID': [1, 2, 3], 'Age': [25, 30, 35]})

Employee_details = Employee_name.set_index('ID').join(Employee_age.set_index('ID'))
print(Employee_details)

Здесь мы использовали метод set_index() в Python Pandas, чтобы установить значения «ID» в качестве индекса для обоих исходных DataFrame.

Employee_name.set_index('ID').join(Employee_age.set_index('ID'))

Выход:

       Name  Age
ID              
1     Alice   25
2       Bob   30
3   Charlie   35

Вот скриншот выполнения кода:

Используя метод соединения

2. Используя функцию Insert()

Insert() в Pandas Python используется для столбца из одного фрейма данных в другой в определенной позиции. В противном случае он аналогичен описанному выше методу соединения.

Давайте посмотрим на пример, демонстрирующий, как использовать функцию Insert() для добавления столбца в фрейм данных в Python:

import pandas as pd

state_info = pd.DataFrame({
    'State': ['California', 'Texas', 'New York'],
    'Population': [39512223, 28995881, 19453561],
    'Area(sq mi)': [423967, 695662, 54555]
})
state_additional_info = pd.DataFrame({
    'State': ['California', 'Texas', 'New York'],
    'Governor': ['Gavin Newsom', 'Greg Abbott', 'Kathy Hochul']
})

extracted_governor_col = state_additional_info['Governor']
state_info.insert(2, "Governor", extracted_governor_col)
print("First DataFrame after adding the column from the second DataFrame:\n", state_info)

Сначала нам нужно извлечь столбец, который мы хотим добавить в другой DataFrame в Python:

extracted_governor_col = state_additional_info['Governor']
print(type(extracted_governor_col))

Таким образом, мы создали класс pandas.core.series.Series в Python.

state_info.insert(2, "Governor", extracted_governor_col)

Здесь мы вставляем эту серию во вторую позицию в кадре данных state_info с помощью функции Insert() в Pandas Python.

Вывод исходного кода:

First DataFrame after adding the column from the second DataFrame:
         State  Population      Governor  Area(sq mi)
0  California    39512223  Gavin Newsom        423967
1       Texas    28995881   Greg Abbott        695662
2    New York    19453561  Kathy Hochul         54555

Следующий снимок экрана был сделан после реализации кода в редакторе Pycharm.

Используя функцию Insert()

3. Используя функцию merge()

Функция Pandas merge() объединяет два кадра данных на основе общего столбца. Функция merge() выполняет операции соединения, аналогичные реляционным базам данных, таким как SQL.

Пример:

import pandas as pd

employees_df = pd.DataFrame({
    'EmployeeID': [1, 2, 3],
    'Name': ['John', 'Alice', 'Bob']
})
departments_df = pd.DataFrame({
    'EmployeeID': [2, 3, 4],
    'Department': ['HR', 'Engineering', 'Marketing']
})
merged_df = pd.merge(employees_df, departments_df, on='EmployeeID', how='left')
print("Merged DataFrame:\n", merged_df)

Здесь мы предоставили on и How параметры функции merge(). Параметр on=’EmployeeID’ принимает имя столбца, который поможет объединить.

Параметр How=’left’ указывает, какие ключи включены в таблицу результатов.

merged_df = pd.merge(employees_df, departments_df, on='EmployeeID', how='left')

Выход:

Merged DataFrame:
    EmployeeID   Name   Department
0           1   John          NaN
1           2  Alice           HR
2           3    Bob  Engineering

После выполнения кода в Pycharm результат отображается на снимке экрана ниже.

Используя функцию merge()

4. С помощью функции map()

Функция map() в Pandas используется для поэлементного преобразования одного столбца.

Однако его можно использовать в сочетании со словарем Python для добавления столбца в DataFrame в Pandas.

Пример:

import pandas as pd

state_info = pd.DataFrame({
    'State': ['California', 'Texas', 'New York', 'Florida'],
    'Population': [39512223, 28995881, 19453561, 21477737],
    'Area(sq mi)': [423967, 695662, 54555, 170312],
})
state_regions = {
    'California': 'West',
    'Texas': 'South',
    'New York': 'Northeast',
    'Florida': 'South'
}
state_info['Region'] = state_info['State'].map(state_regions)
print("DataFrame with Region Column:\n", state_info)

Выход:

DataFrame with Region Column:
         State  Population  Area(sq mi)     Region
0  California    39512223        423967       West
1       Texas    28995881        695662      South
2    New York    19453561         54555  Northeast
3     Florida    21477737        170312      South

С помощью функции map()

5. Используя метод Assign

Метод Assign в Pandas позволяет нам добавлять новый столбец в фрейм данных в виде цепочки.

Мы будем использовать функцию карты, чтобы сопоставить столбец фрейма данных с исходным столбцом.

Пример:

import pandas as pd

Users_dataframe = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
Age_dataframe = pd.DataFrame({'ID': [2, 3, 4], 'Age': [25, 30, 22]})

Users_dataframe = Users_dataframe.assign(Age=Users_dataframe['ID'].map(Age_dataframe.set_index('ID')['Age']))
print('The extended user dataframe:\n', Users_dataframe)

Мы используем Age=Users_dataframe[‘ID’] для добавления нового столбца в DataFrame. Значение для этого нового будет получено путем сопоставления столбца «ID» кадра данных со значениями «Возраст» во втором кадре данных.

Users_dataframe.assign(Age=Users_dataframe['ID'].map(Age_dataframe.set_index('ID')['Age']))

Выход:

The extended user dataframe:
    ID     Name   Age
0   1    Alice   NaN
1   2      Bob  25.0
2   3  Charlie  30.0

После того, как код был реализован в редакторе Pycharm, был сделан снимок экрана ниже, поясняющий результат:

Метод Assign

6. С помощью функции concat()

Функция concat в Python может быть полезна для добавления столбцов, когда DataFrames имеют одинаковый индекс.

Вот пример того, как добавить столбец из другого DataFrame в Pandas Python:

import pandas as pd

clients_dataframe = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['John', 'Joe', 'Monica']})
clients_cities = pd.DataFrame({'Cities': ['Texas', 'Florida', 'Alaska']})

concatenated_df = pd.concat([clients_dataframe, clients_cities], axis=1)
print(concatenated_df)

Выход:

   ID    Name   Cities
0   1    John    Texas
1   2     Joe  Florida
2   3  Monica   Alaska

Вот скриншот реализации кода в редакторе Pycharm Python:

С помощью функции concat()

Заключение

В Pandas Python существует шесть различных методов добавления столбца из другого фрейма данных, таких как функция Insert(), функция merge(), функция Map(), метод Assign, метод Concat и т. д., что упрощает задачу для любого программиста.

Добавить комментарий