ディクショナリ値を新しい Pandas 列にマッピングする
Pandas データフレームを扱う場合、ベースの新しい列を追加する必要がある場合があります。既存の列からマップされた値に基づいて。これを実現するために、新しい列の割り当てで equiv 関数をパラメーターとして使用するというよくある誤解があります。ただし、equiv は呼び出し可能な関数ではないため、エラーが発生します。
正しいアプローチは、Pandas のマップ関数を使用することです。ディクショナリからのマップされた値に基づいて新しい列を追加する構文は次のとおりです。
df["new_column"] = df["existing_column"].map(mapping_function)
mapping_function は、既存の列の値を受け入れ、必要なマップされた値を返す関数です。この場合、マッピング関数は辞書 equiv を利用して対応するマッピングされた値を取得するラムダ関数です。
mapping_function = lambda x: equiv[x]
このメソッドを利用すると、データフレーム df が新しい列 "B" で更新されます。提供された辞書に基づいて「A」列からマップされた値が含まれます:
import pandas as pd equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
出力:
A B 0 7001 1 1 8001 2 2 9001 3
このメソッドは、キーが以下に例を示すように辞書:
equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001, 10000]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
出力:
A B 0 7001 1 1 8001 2 2 9001 3 3 10000 NaN
以上がディクショナリ値を新しい Pandas 列にマップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。