在 Pandas 的 DataFrame 中合并两列文本

Ahmed Waheed 2023年1月30日 2020年6月9日
  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