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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2702閲覧

python pandas データフレームの更新について

Platycerium

総合スコア34

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/05/11 03:00

pythonのpandasを使用して2つのデータフレームから更新しようとしています。
df1をベースとして、df2に共通のIDがあればdf1を更新する以下のようなものを作成したいです。

ID Info value
A 100 120
B 200 130
C 300 140
F 50 150

色々調べて以下のコードを試みたのですが、
思い通りの結果になりません。
どのように修正をしたらよいのでしょうか?

import pandas as pd df1 = pd.DataFrame(data=[ ["A", 10,120], ["B", 20,130], ["C", 30,140], ["F", 50,150]] ,columns=["ID", "Info","value"]) df2 = pd.DataFrame(data=[ ["A", 100], ["B", 200], ["C", 300], ["D", 40], ["E", 50]] ,columns=["ID", "Info"]) df1.update(df2) print(df1)

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

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

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

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

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

guest

回答1

0

ベストアンサー

IDをインデックスにしましょう。

python

1>>> import pandas as pd 2>>> 3>>> df1 = pd.DataFrame(data=[ 4... ["A", 10,120], 5... ["B", 20,130], 6... ["C", 30,140], 7... ["F", 50,150]] 8... ,columns=["ID", "Info","value"]).set_index('ID') 9>>> 10>>> df2 = pd.DataFrame(data=[ 11... ["A", 100], 12... ["B", 200], 13... ["C", 300], 14... ["D", 40], 15... ["E", 50]] 16... ,columns=["ID", "Info"]).set_index('ID') 17>>> 18>>> 19>>> df1.update(df2) 20>>> print(df1) 21 Info value 22ID 23A 100.0 120 24B 200.0 130 25C 300.0 140 26F 50.0 150

投稿2021/05/11 03:17

ppaul

総合スコア24670

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

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

Platycerium

2021/05/11 03:26

ご回答いただきありがとうございました。 df1.set_index('ID').update(df2.set_index('ID')) でも同じことができ、大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問