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

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

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

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

Q&A

解決済

1回答

813閲覧

python マスタ間の検索

amateur_PGM

総合スコア25

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

0グッド

0クリップ

投稿2021/01/12 04:19

編集2021/01/12 05:14

やりたいこと

・pythonを使い、「商品名に対しタグを付与」したいです。
・商品トランザクションのキーワードとタグ辞書の検索単語を比較し、一致するものがあればタグを商品名に紐付ける、ことを考えています。

・手元のデータ
【商品トランザクション】

商品名キーワード
もも果実,健康的,植物

【タグ辞書】

タグ検索単語
フルーツフルーツ,果物,果実
ヘルシーヘルシー,健康的
植物植物,プラント,木

・得たい結果

商品名タグ
ももフルーツ,ヘルシー,植物

自力でやった範囲

python

1shyohin_list = pd.Dataframe({"商品名":"もも", 2 "キーワード":[“果実“,”健康的”,”植物”]}) 3tag_list = pd.Dataframe({"タグ":["フルーツ","ヘルシー","植物"], 4"検索単語":[[“フルーツ“,”果物”,”果実”],[“ヘルシー“,”健康的”],[“植物“,”プラント”,”木”]]} 5 6shyohin_tag = [] 7for i, row_a in shyohin_list[["商品名", "キーワード"]].iterrows(): 8 for j, row_b in tag_list.iterrows(): 9 if (row_a == row_b).all(): 10 shyohin_tag.append(tag_list("tag")) 11 break 12 else: 13 shyohin_tag.append(False) 14shyohin_list["tag"] = shyohin_tag 15

上記を考えましたが、目的結果を得ることができず止まってしまいました。
何かアイディアがあれば教えてください。よろしくお願いします。
参考にしたURL:teratail:pandas一致確認

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

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

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

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

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

javahack

2021/01/12 04:37

テーブル定義は変更可能でしょうか? 変更可能なら「データベース 正規化」で出てくる内容をよく読んでテーブル定義の見直しを試してみてください。 https://www.google.com/search?q=%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E6%AD%A3%E8%A6%8F%E5%8C%96&rlz=1C1AVFC_enJP830JP830&oq=%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+&aqs=chrome.4.69i57j0i433l2j0l2j69i60j69i61l2.11251j0j7&sourceid=chrome&ie=UTF-8
amateur_PGM

2021/01/12 05:04

修正・追記の依頼ありがとうございます。 ・商品側はトランザクションデータでこの状態で入ってきます。 ・タグ側は検索単語10個までカラム分割できる仕様です。 なので、タグ側のカラム分割はできます。 ポイントがズレてましたらご指摘ください。
javahack

2021/01/12 05:43

すみません。データベースを使用していると勘違いしていました。 指摘は無視してください。
guest

回答1

0

ベストアンサー

1 行でいけます!!

Python

1df_d = pd.DataFrame([{'商品名':'もも','キーワード':['果実','健康的','植物']},{'商品名':'サボテン','キーワード':['植物']}]) 2df_t = pd.DataFrame({'タグ': ['フルーツ','ヘルシー','植物'], '検索単語': [['フルーツ','果物','果実'], ['ヘルシー','健康','健康的'], ['植物','プラント','木']]}) 3 4pd.concat([df_d.drop(columns='キーワード'), df_d['キーワード'].map(lambda d: df_t['検索単語'].map(lambda t: not set(d).isdisjoint(set(t)))).map(lambda i: df_t['タグ'][i].to_list())], axis=1) 5 6# 商品名 キーワード 7#0 もも [フルーツ, ヘルシー, 植物] 8#1 サボテン [植物] 9

100 万レコードとかなると非現実的ですが 1 万くらいならいけると思います。

投稿2021/01/12 06:47

A_kirisaki

総合スコア2853

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

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

amateur_PGM

2021/01/12 16:03

アンサーありがとうございます。お返事遅れてしまいすみません まずは手持ちの2万件で試しましたがいけました! コードの引き出しを増やせるように勉強させて頂きます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問