質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

4131閲覧

Pandas Dataframeの新しい列の追加方法(辞書から)

unser

総合スコア58

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/08/16 00:25

Python

1import pandas as pd 2 3df = pd.DataFrame([ 4 ['8/13','Taro',20,'Tokyo'], 5 ['8/12','King',18,'Toronto'], 6 ['8/16','John',19,'NYC'], 7 ['8/16','King',18,'Toronto']], 8 columns = ['Date','Name','Age','From']) 9 10seiseki_lastyear ={ 11 'Taro':{'Society': 60, 'English': 90, 'Math': 20}, 12 'John':{'Society': 100, 'English': 80, 'Math': 80}, 13 'King':{'Society': 20, 'English': 80, 'Math': 0}, 14}

上のようなdataframeにおいて,Nameをkeyとして,dfの新しい列として,Society, English,Mathを追加したいと考えていますが,どのようにすれば良いかわからない状態にあります.

ご教授のほどよろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずpd.DataFrame.from_dict()関数を用いて辞書をデータフレームに変換し、その後df.merge()メソッド※を用いて連結します。
※参考:pandas.DataFrameを結合するmerge, join(列・インデックス基準) | note.nkmk.me

ここで、dfでは名前の列がName列に、df_seisekiでは名前の列がインデックスにそれぞれ設定されているため、.merge()メソッドの引数はleft_on='Name', right_index=Trueとなります。

python

1In [11]: df_seiseki = pd.DataFrame.from_dict(seiseki, 'index') 2 ...: df_seiseki 3Out[11]: 4 Society English Math 5Taro 60 90 20 6John 100 80 80 7King 20 80 0 8 9In [12]: df.merge(df_seiseki, left_on='Name', right_index=True) 10Out[12]: 11 Name Age From Society English Math 120 Taro 20 Tokyo 60 90 20 131 John 19 NYC 100 80 80 142 King 18 Toronto 20 80 0

投稿2021/08/16 00:37

kirara0048

総合スコア1399

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問