前提・実現したいこと
Pythonのデータフレーム操作に関する質問です。
データフレームAの「ID」配列の値とデータフレームBの「ID」配列の値が一致したら、データフレームBの同じ行の「受付回数」配列の値をデータフレームA「受付回数」配列に書き込む、これを最初の行から最後の行まで繰り返すプログラムを作りたいです。
そして書き込んだ値に全て+1したいです。0だったら1、4だったら5、といった感じです。
また、dfBに書いてないIDがdfAにあった場合(今回の場合はabcdなど、複数ある)は受付回数の値を+1だけしたいです。
つまり受付IDの隣に受付回数を記入して+1したいです。
前後の列は省略しました。ID列の「...」のところも数が多いため省略しました(iiii~yyyyは書いてませんがあるものとします)。また、dfAとdfBの行数は同じではなくdfAの方が多いです。
以下がサンプルと実行後の理想の表です。
dfA.csv
||利用者ID|受付回数|
|:--|:--:|
||aaaa|0|
||cccc|0|
||vvvv|0|
||xxxx|0|
||rrrr|0|
||yyyy|0|
||eeee|0|
||gggg|0|
||abcd|0|
||...|0|
||hhhh|0|
dfB.csv
||ID|受付回数|
|:--|:--:|
||aaaa|5|
||bbbb|8|
||cccc|1|
||dddd|2|
||eeee|0|
||ffff|1|
||gggg|1|
||hhhh|4|
||...|...|
||zzzz|5|
プログラム実行後のdfA.csv
||利用者ID|受付回数|
|:--|:--:|
||aaaa|6|
||cccc|2|
||vvvv|(...の値)+1|
||xxxx|(...の値)+1|
||rrrr|(...の値)+1|
||yyyy|(...の値)+1|
||eeee|1|
||gggg|2|
||abcd|1|
||...|(...の値)+1|
||hhhh|5|
該当のソースコード
Python
1import pandas as pd 2import numpy as np 3 4df=pd.read_csv("dfA.csv") 5test=pd.read_csv("dfB.csv") 6 7temp=pd.merge(df,test,left_on="利用者ID",right_on="利用者ID",how="left").drop("利用者ID", axis=1) 8df["利用回数"].where(pd.isna(temp["利用回数"]),temp["利用回数"],inplace=True) 9 10
試したこと
上記のプログラムを試したところ、「ValueError: Length of values does not match length of index」と表示されました。
補足情報(FW/ツールのバージョンなど)
少し返信が遅れるかもしれません。
jupyternotebookを使っていてpythonのバージョンは3.7ぐらいです。
プログラミングを始めたばかりの初心者です。どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。