2つのcsvファイル。
1つは商品台帳(全体)の10列のCSV。もう1つのCSVファイルは在庫数(3列)のCSVファイルがあります。
やりたいことは、在庫数のCSVファイルの値を、全体のCSVに 商品コードをKeyにして反映したいと思っています。
python3
1import pandas as pd 2df = pd.DataFrame({ 3 'code': ['item1','item2','item3','item4','item5','item6'], 4 'on_off': [1,1,1,1,1,1], 5 'stock': [1,1,1,1,1,1], 6 'detail': ['文字列','文字列','文字列','文字列','文字列','文字列'] 7}) 8print(df) 9(実際は10列だが単純化して4列。重要なのはもう1つのCSVとは列数が異なる) 10# code on_off stock detail 11#0 item1 1 1 文字列 12#1 item2 1 1 文字列 13#2 item3 1 1 文字列 14#3 item4 1 1 文字列 15#4 item5 1 1 文字列 16#5 item6 1 1 文字列 17 18df_stock=pd.DataFrame({ 19 'code': ['item2','item5','item3'], 20 'on_off': [1,0,1], 21 'stock': [4,8,19]}) 22print(df_stock) 23 24# code on_off stock 25#0 item2 1 4 26#1 item5 0 8 27#2 item3 1 10 28#3 item7 1 13 29 30在庫csvの特定の列の値 df_stock['stock']を 元の全体CSVのdf['stock']列に商品コードをkeyにして 31商品コードで合致した列の値を変更したいと思っています 32 33求める結果 元帳CSV(df) ※の部分を在庫CSVの値に変更したい 34# code on_off stock detail 35#0 item1 1 1 文字列 36#1 item2 1 ※4 文字列 37#2 item3 1 ※10 文字列 38#3 item4 1 1 文字列 39#4 item5 1 1 文字列 40#5 item6 1 ※8 文字列 41 42 43#item7のように 元帳に存在しないコードが 在庫CSVに存在する場合は 44※i「item7は元帳に存在しない旨 エラーを表示したい
自分でやった事。
いろいろ調べて たどり着いたのが、下記ページのwhere関数なのですが・
#Pandasで条件に合致した要素の置換を行うwhere関数の使い方
https://deepage.net/features/pandas-where.html
これが別の列の値・・を変更出来る方法ではないのかよくわからず・・
dfを辞書のようにkey操作するにはどうしたらいいものか・・
方向性でも教えていただけますと幸いです
追記 pandas find関数ですかね・・・もう一回自分でも考えてます・・
https://qiita.com/haru1977/items/2892480d31c296f2ec8e
回答2件
あなたの回答
tips
プレビュー