📌  相关文章
📜  在 Pandas 中将两个文本列合并为一个列(1)

📅  最后修改于: 2023-12-03 15:07:45.323000             🧑  作者: Mango

在 Pandas 中将两个文本列合并为一个列

在数据分析和处理过程中,经常需要将两个或多个文本列合并为一个列,以便更好地分析和可视化数据。在 Pandas 中,可以使用 pandas.Series.str.cat() 方法、 pandas.Series.str.cat() 方法、pandas.concat() 函数和 pandas.DataFrame.apply() 方法等方式实现将两个文本列合并为一个列。

使用 pandas.Series.str.cat() 方法

pandas.Series.str.cat() 方法可以将两个文本列按指定的分隔符连接起来,返回一个新的文本列。

import pandas as pd

# 创建示例数据集
df = pd.DataFrame({
    "first_name": ["John", "Mary", "Tom", "Jane"],
    "last_name": ["Doe", "Smith", "Lee", "Brown"]
})

# 将 first_name 和 last_name 列连接为 full_name 列
df["full_name"] = df["first_name"].str.cat(df["last_name"], sep=" ")

该示例代码将 first_name 列和 last_name 列连接,用空格分隔,生成一个新的 full_name 列。

使用 pandas.Series.str.cat() 方法

pandas.Series.str.cat() 方法可以将两个文本列按指定的分隔符连接起来,返回一个新的文本列。

import pandas as pd

# 创建示例数据集
df = pd.DataFrame({
    "first_name": ["John", "Mary", "Tom", "Jane"],
    "last_name": ["Doe", "Smith", "Lee", "Brown"]
})

# 将 first_name 和 last_name 列连接为 full_name 列
df["full_name"] = df["first_name"].str.cat(df["last_name"], sep=" ")

该示例代码将 first_name 列和 last_name 列连接,用空格分隔,生成一个新的 full_name 列。

使用 pandas.concat() 函数

pandas.concat() 函数可以将两个或多个列水平拼接起来,返回一个新的 DataFrame,要求拼接的列数和行数必须一致。

import pandas as pd

# 创建示例数据集
df = pd.DataFrame({
    "first_name": ["John", "Mary", "Tom", "Jane"],
    "middle_name": ["", "Linda", "", ""],
    "last_name": ["Doe", "Smith", "Lee", "Brown"]
})

# 将 first_name、middle_name 和 last_name 列连接为 full_name 列
df["full_name"] = pd.concat([df["first_name"], df["middle_name"], df["last_name"]], axis=1).apply(
    lambda x: " ".join(x.dropna().astype(str).values),
    axis=1
)

该示例代码将 first_namemiddle_namelast_name 列连接,生成一个新的 full_name 列。其中,pd.concat([df["first_name"], df["middle_name"], df["last_name"]], axis=1) 将三个列水平连接,apply() 函数沿着行轴应用 lambda 函数,将每一行转换为字符串。

总结

以上介绍了使用 pandas.Series.str.cat() 方法、pandas.concat() 函数和 pandas.DataFrame.apply() 方法将两个文本列合并为一个列的方法。在实际应用中,可以根据数据特点选择适合的方法进行文本列的合并。