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

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

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

解決済

python pandas Dataframe 特定の列に合致する別の列の値を変更したい

dub
dub

総合スコア19

2回答

-1評価

1クリップ

182閲覧

投稿2022/01/22 05:00

編集2022/01/22 19:58

2つのcsvファイル。
1つは商品台帳(全体)の10列のCSV。もう1つのCSVファイルは在庫数(3列)のCSVファイルがあります。

やりたいことは、在庫数のCSVファイルの値を、全体のCSVに 商品コードをKeyにして反映したいと思っています。

python3

import pandas as pd df = pd.DataFrame({ 'code': ['item1','item2','item3','item4','item5','item6'], 'on_off': [1,1,1,1,1,1], 'stock': [1,1,1,1,1,1], 'detail': ['文字列','文字列','文字列','文字列','文字列','文字列'] }) print(df) (実際は10列だが単純化して4列。重要なのはもう1つのCSVとは列数が異なる) # code on_off stock detail #0 item1 1 1 文字列 #1 item2 1 1  文字列 #2 item3 1 1  文字列 #3 item4 1 1  文字列 #4 item5 1 1  文字列 #5 item6 1 1  文字列 df_stock=pd.DataFrame({ 'code': ['item2','item5','item3'], 'on_off': [1,0,1], 'stock': [4,8,19]}) print(df_stock) # code on_off stock #0 item2 1 4 #1 item5 0 8 #2 item3 1 10 #3 item7 1 13 在庫csvの特定の列の値 df_stock['stock']を 元の全体CSVのdf['stock']列に商品コードをkeyにして 商品コードで合致した列の値を変更したいと思っています 求める結果 元帳CSV(df) ※の部分を在庫CSVの値に変更したい # code on_off stock detail #0 item1 1 1 文字列 #1 item2 1 ※4  文字列 #2 item3 1 ※10  文字列 #3 item4 1 1   文字列 #4 item5 1 1   文字列 #5 item6 1 ※8   文字列 #item7のように 元帳に存在しないコードが 在庫CSVに存在する場合は ※i「item7は元帳に存在しない旨 エラーを表示したい

自分でやった事。
いろいろ調べて たどり着いたのが、下記ページのwhere関数なのですが・
#Pandasで条件に合致した要素の置換を行うwhere関数の使い方
https://deepage.net/features/pandas-where.html

これが別の列の値・・を変更出来る方法ではないのかよくわからず・・

dfを辞書のようにkey操作するにはどうしたらいいものか・・

方向性でも教えていただけますと幸いです

追記 pandas find関数ですかね・・・もう一回自分でも考えてます・・
https://qiita.com/haru1977/items/2892480d31c296f2ec8e

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2022/01/22 06:03

print(pridf_stock) のコードでNameErrorとなります。
dub

2022/01/22 06:52

御指摘ありがとうございます。修正しました print(df_stock)

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る