Pandas の DataFrame で 2 列のテキストを組み合わせる
Ahmed Waheed
2023年1月30日
データセットを操作するときは、2つ以上の列を組み合わせて 1つの列を形成する必要がある場合があります。たとえば、姓
と姓
が列で区切られたデータセットがあり、フルネーム
列が必要になったとします。このタスクを達成するためのさまざまな方法を以下に示します。
次のセクションでは、次のように同じ 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