LoginSignup
1
2

More than 1 year has passed since last update.

pandas.DataFrame.assignで列名として文字列を指定する方法(コード例)

Posted at

背景

pandas.DataFrame.assignにおいて、列名として文字列を指定したい場面がありました。以下のドキュメントに方法は書いてあるのですが、キーワードとして引数として入力する例のみがコード例として紹介されています。

本記事ではドキュメントと可変長引数(**kwargs)の扱い方を参考にpandas.DataFrame.assignにおいて、列名として文字列を指定する方法をコードとして紹介します。

コード例

まずは対象となるデータフレームを用意します。

データフレームの準備
import pandas as pd

df = pd.DataFrame({"絵文字": ["🍎", "🦍", "📯"]})
df
絵文字
0 🍎
1 🦍
2 📯

以下、pandas.DataFrame.assignで列名として文字列を指定する方法(コード例)です。

pandas.DataFrameのassignで列名として文字列を指定する方法(コード例)
df.assign(**{"名前": ["リンゴ", "ゴリラ", "ラッパ"], "普通名詞": True})
絵文字 名前 普通名詞
0 🍎 リンゴ True
1 🦍 ゴリラ True
2 📯 ラッパ True

補足

紹介した方法を活用すると、例えば以下のような書き換えが可能になります。

書き換えの例
- df = pd.DataFrame({"絵文字": ["🍎", "🦍", "📯"]})
- df["名前"] = ["リンゴ", "ゴリラ", "ラッパ"]
- df["普通名詞"] = True
+ df = pd.DataFrame({
+     "絵文字": ["🍎", "🦍", "📯"]
+ }).assign(**{
+     "名前": ["リンゴ", "ゴリラ", "ラッパ"],
+     "普通名詞": True
+ })

メソッドの連結により、論理ステップ数が一つで最終的に実現したいデータフレームを生成できます。メソッドの連結は、以下のpandasのアンチパターンや良い書き方を解説した記事においても勧められています。

Instead of sequentially mutating a pandas DataFrame, a better approach is to transform it by chaining pandas methods.
引用:4 Pandas Anti-Patterns to Avoid and How to Fix Them

さらに、列名を文字列として扱う場合、変数化も可能になります。

列名(文字列)の変数化の例
+ column_icon = "絵文字"
+ column_name = "名前"
+ column_is_common_noun = "普通名詞"

- df = pd.DataFrame({
-     column_icon: ["🍎", "🦍", "📯"]
- }).assign(**{
-     column_name: ["リンゴ", "ゴリラ", "ラッパ"],
-     column_is_common_noun: True
- })
+ df = pd.DataFrame({
+     "絵文字": ["🍎", "🦍", "📯"]
+ }).assign(**{
+     "名前": ["リンゴ", "ゴリラ", "ラッパ"],
+     "普通名詞": True
+ })

コード中の他の箇所で列名を扱う際に便利になります。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2