以下分かり難いと思います、大変申し訳ありません&ご助言頂ければ幸いです。
1 前提・実現したいこと
chipとcircuitという2つのdfがあり、各カラムは以下のようになっています
(左:chip、右circuit)
2 実現したいこと
chipのcolsに入った文字列をカンマ区切りで分解、
その文字列をキーにcircuitのtestを検索、ヒットした全testに対応する
matchの文字列を、chipのtest_matchカラムに代入したいです
3 発生している問題・エラーメッセージ
おおまかな流れは実現出来たのですが、現コードでは以下例のように
最後にヒットしたtestに対応するmatchの値のみ、test_matchに入ります。
例えばID:0はcols:IAA,IBBなので、test:IAAとIBBに対応するmatch:A-BとA-Cを
test_matchに[A-B,A-C]のような形で代入したいです。
4 該当のソースコード
chip = {"ID" : ["A","B","C","D","E","F","G"],"cols" : ["IAA,IBB","nan","nan","nan","IBB,ICC","nan","ICC"]} circuit = {"test" : ["IAA","IBB","ICC","IDD"],"match" : ["A-B","A-C","B-C","D"]} pd_chip = pd.DataFrame.from_dict(chip) pd_circuit = pd.DataFrame.from_dict(circuit) pd_chip = pd_chip.assign(test_match = "") for index, row in pd_chip.iterrows(): for s in row["cols"].split(","): pd_chip["test_match"][index] = pd_circuit.loc[pd_circuit["test"].str.contains(s),"match"].values
5 自分で調べたことや試したこと
pd_chip["test_match"][index] = pd_circuit.loc[pd_circuit["test"].str.contains(s),"match"].values部分を
何かしら変更すればよいと思い、+を+=などにしたり、それらしきコードは思いつくまま
試してみたのですが完全な知識不足でうまくいかず。。。
6 使っているツールのバージョンなど補足情報
Anaconda 3.7
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。