Pandas の DataFrame で 2 列のテキストを組み合わせる

  1. +演算子メソッド
  2. df.map() メソッド
  3. df.apply() メソッド
  4. Series.str.cat() メソッド
  5. df.agg() メソッド

データセットを操作するときは、2つ以上の列を組み合わせて 1つの列を形成する必要がある場合があります。たとえば、「姓」と「姓」が列で区切られたデータセットがあり、「フルネーム」列が必要になったとします。このタスクを達成するためのさまざまな方法を以下に示します。

  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() 関数を使用して、2つの列のテキストを組み合わせることができます。

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() メソッドを使用して、シリーズ/インデックスの文字列を指定されたセパレータで連結することもできます。

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 Column

  • Pandas の特定の条件に基づいて DataFrame 列を作成する方法
  • Pandas で特定の列が所定の条件を満たすすべての行のインデックスを取得する方法