在 Pandas 的 DataFrame 中合并两列文本

Ahmed Waheed 2023年1月30日
  1. + 运算符方法
  2. df.map() 方法
  3. df.apply() 方法
  4. Series.str.cat() 方法
  5. df.agg() 方法
在 Pandas 的 DataFrame 中合并两列文本

有时,使用数据集时,你需要组合两列或更多列以形成一列。例如,你有一个数据集,其中名字和姓氏以列分隔,现在你需要全名列。下面列出了完成此任务的不同方法。

  1. + 运算符
  2. map()
  3. df.apply()
  4. Series.str.cat()
  5. df.agg()

在以下各节中,我们将使用相同的 DataFrame,如下所示:

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
print(df)

输出:

     First      Last Age
0      Ali     Azmat  30
1  Sharukh      Khan  40
2    Linus  Torvalds  70

+ 运算符方法

仅当你要合并相同数据类型的数据时,才使用+ 运算符。

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"] + " " + df["Last"]
print(df)

输出:

     First      Last Age       Full Name
0      Ali     Azmat  30       Ali Azmat
1  Sharukh      Khan  40    Sharukh Khan
2    Linus  Torvalds  70  Linus Torvalds

df.map() 方法

你还可以使用 df.map() 函数合并两列的文本。

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df = pd.DataFrame(data, columns=["First", "Last", "Age"])
df["Full Name"] = df["First"].map(str) + " " + df["Last"]
print(df)

输出:

     First      Last Age       Full Name
0      Ali     Azmat  30       Ali Azmat
1  Sharukh      Khan  40    Sharukh Khan
2    Linus  Torvalds  70  Linus Torvalds

df.apply() 方法

join() 函数也用于连接字符串。我们可以使用 df.apply() 函数将其应用于我们的 DataFrame.df.apply() 函数用于在特定轴上应用另一个函数。

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df["Full Name"] = df[["First", "Last"]].apply(" ".join, axis=1)
print(df)

输出:

     First      Last Age       Full Name
0      Ali     Azmat  30       Ali Azmat
1  Sharukh      Khan  40    Sharukh Khan
2    Linus  Torvalds  70  Linus Torvalds

Series.str.cat() 方法

我们也可以使用 Series.str.cat() 方法将 Series / Index 中的字符串与给定的分隔符连接起来。

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df["Full Name"] = df["First"].str.cat(df["Last"], sep=" ")
print(df)

输出:

     First      Last Age       Full Name
0      Ali     Azmat  30       Ali Azmat
1  Sharukh      Khan  40    Sharukh Khan
2    Linus  Torvalds  70  Linus Torvalds

df.agg() 方法

df.apply() 相同,此方法还用于在指定轴上应用特定函数。

import pandas as pd

data = [["Ali", "Azmat", "30"], ["Sharukh", "Khan", "40"], ["Linus", "Torvalds", "70"]]
df["Full Name"] = df[["First", "Last"]].agg(" ".join, axis=1)
print(df)

输出:

     First      Last Age       Full Name
0      Ali     Azmat  30       Ali Azmat
1  Sharukh      Khan  40    Sharukh Khan
2    Linus  Torvalds  70  Linus Torvalds

相关文章 - Pandas DataFrame Column