Когда я работал с некоторыми фреймами данных, было сложно вручную добавлять один и тот же столбец в разные фреймы данных, поэтому я исследовал и нашел шесть различных способов добавить столбец из других фреймов данных в Pandas Python.
Давайте рассмотрим их все по одному подробно с помощью нескольких примеров.
- 1. Используя метод Concat
- 2. Используя функцию Insert()
- 3. Используя функцию merge()
- 4. С помощью функции map()
- 5. Используя метод Assign
- 6. С помощью функции concat()
- Заключение
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.
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 результат отображается на снимке экрана ниже.
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
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, был сделан снимок экрана ниже, поясняющий результат:
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:
Заключение
В Pandas Python существует шесть различных методов добавления столбца из другого фрейма данных, таких как функция Insert(), функция merge(), функция Map(), метод Assign, метод Concat и т. д., что упрощает задачу для любого программиста.