如何在 Pandas DataFrame 中连接列值?

pythonpandasserver side programmingprogramming

Pandas 是一个功能强大的 Python 数据操作和分析库。它提供了多种处理和转换数据的函数和工具,包括在 Pandas DataFrame 中连接列值的功能。

在 Pandas DataFrame 中,列表示数据的变量或特征。连接列值涉及将两个或多个列的值组合成一个列。这对于创建新变量、合并来自不同来源的数据或格式化数据以供分析非常有用。

要连接 Pandas DataFrame 中的列值,您可以使用 pd.Series.str.cat() 方法。此方法使用指定的分隔符沿特定轴连接两个或多个系列。 str.cat() 方法可与 apply() 函数一起使用,将其应用于 DataFrame 的每一行。

Pandas 中还有其他几种可用于连接列值的方法和函数,包括 pd.concat() 函数、pd.Series.str.join() 方法和使用不同分隔符或字符串的 pd.Series.str.cat() 方法。每种方法都有自己的优点和缺点,具体取决于具体用例。

在本教程中,我们将探索 Pandas 中可用于连接 DataFrame 中列值的不同方法和函数。我们将为每种方法提供分步说明和代码示例,并讨论每种方法的优缺点。在本教程结束时,您将全面了解如何在 Pandas DataFrame 中连接列值,以及哪种方法最适合其特定用例。

现在让我们考虑两种在 Panda 数据框中连接列值的方法。

使用 pd.Series.str.cat() 方法连接列值

  • 在 DataFrame 中创建一个新列来存储连接的值。

  • 使用 pd.Series.str.cat() 方法连接要合并的列的值。

  • 使用"sep"参数指定要在连接值之间使用的分隔符。

  • 使用 apply() 方法将连接函数应用于每一行DataFrame。

现在我们已经在要点中讨论了该方法,让我们在代码中使用它。

示例

考虑下面显示的代码。

import pandas as pd
from tabulate import tabulate

# 创建示例 DataFrame
df = pd.DataFrame({
'Name': ['John', 'Jane', 'Bob'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'Mexico']
})

# 为连接值创建新列
df['Name_Age_Country'] = ''

# 定义一个函数来连接列
def concatenate_columns(row):
   """
   Concatenate the values in the 'Name', 'Age',
   and 'Country' columns with a separator of '|'.
   """
   return row['Name'] + '|' + str(row['Age']) + '|' + row['Country']

# 将函数应用于 DataFrame 的每一行
df['Name_Age_Country'] = df.apply(concatenate_columns, axis=1)

# 打印原始 DataFrame 和连接后的 DataFrame
print('Original DataFrame:\n')
print(tabulate(df[['Name', 'Age', 'Country']], headers='keys', tablefmt='psql'))
print('\nConcatenated DataFrame:\n')
print(tabulate(df[['Name_Age_Country']], headers='keys', tablefmt='psql'))

输出

执行此代码后,您将获得以下输出 -

观察原始数据框以及我们连接列后它的样子。现在让我们考虑第二种方法。

使用 pd.concat() 方法连接列值

首先创建要连接的列的列表。

  • 使用 pd.concat() 函数沿您选择的轴(即列或行)连接列。

  • 使用 sep 参数指定要在连接的值之间使用的分隔符。

  • 使用 rename() 方法重命名新的连接列。

  • 使用 drop() 方法删除连接的原始列。

示例

考虑下面显示的代码。

import pandas as pd
from tabulate import tabulate

# 创建示例 DataFrame
df = pd.DataFrame({
   'Name': ['John', 'Jane', 'Bob'],
   'Age': [25, 30, 35],
   'Country': ['USA', 'Canada', 'Mexico']
})
print("\nOriginal Dataframe:")
print(tabulate(df, headers='keys', tablefmt='psql'))

# 使用 pd.concat() 函数连接列
concatenated_cols = pd.concat(
   [df['Name'], df['Age'], df['Country']],
   axis=1, keys=['Name', 'Age', 'Country']
)
concatenated_cols['Name_Age_Country'] = concatenated_cols['Name'] + '|' + concatenated_cols['Age'].astype(str) + '|' + concatenated_cols['Country']

# 重命名连接的列并删除原始列
df = pd.concat([df, concatenated_cols['Name_Age_Country']], axis=1)
df = df.rename(columns={'Name_Age_Country': 'Name|Age|Country'})
df = df.drop(columns=['Name', 'Age', 'Country'])

# 打印原始 DataFrame 和连接的 DataFrame
print('\nConcatenated Dataframe:')
print(tabulate(df, headers='keys', tablefmt='psql'))

输出

执行此代码后,您将获得以下输出 −

结论

总之,Pandas 提供了几种连接 DataFrame 中列值的方法。本教程讨论了两种方法:使用 pd.Series.str.cat() 方法和使用 pd.concat() 函数。

根据您的具体用例,其中一种方法可能比另一种更合适。通过利用 Pandas 的灵活性和强大功能,您可以轻松地操作和转换数据以满足您的需求。


相关文章