次のPythonコードを持つと、pd.mergeを使用しようとしていましたが、キー列が同一である必要があります。 SQLと似たようなことをしようとすると、categories.Patternを持つdf.Bの "like"演算子と結合します。列をパターンとして使用し、左側のデータフレームの列を含む2つのパンダデータフレームをマージするにはどうすればよいですか?
UPDATEより良いデータ例です。
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 'Gas Station'], [2, 'Servicenter'], [5, 'Bakery good bread'], [58, 'Fresh market MIA'], [76, 'Auto Liberty aa1121']], columns=['A','B'])
Out[12]:
A B
0 1 Gas Station
1 2 Servicenter
2 5 Bakery good bread
3 58 Fresh market MIA
4 76 Auto Liberty aa1121
categories = pd.DataFrame([['Gasoline', 'Gas Station'], ['Gasoline', 'Servicenter'], ['Food', 'Bakery'], ['Food', 'Fresh market'], ['Insurance', 'Auto Liberty']], columns=['Category','Pattern'])
Out[13]:
Category Pattern
0 Gasoline Gas Station
1 Gasoline Servicenter
2 Food Bakery
3 Food Fresh market
4 Insurance Auto Liberty
期待される結果は次のとおりです。
Out[14]:
A B Category
0 1 Gas Station Gasoline
1 2 Servicenter Gasoline
2 5 Bakery good bread Food
3 58 Fresh market MIA Food
4 58 Auto Liberty aa1121 Insurance
がご提案/フィードバックを感謝しています。ルックアップテーブルとしてデータフレームとパラメータ値
次の完全な例意志を使用して、新しい値を返します
def lookup_table(value, df):
"""
:param value: value to find the dataframe
:param df: dataframe which constains the lookup table
:return:
A String representing a the data found
"""
# Variable Initialization for non found entry in list
out = None
list_items = df['Pattern'].tolist()
for item in list_items:
if item in value:
out = item
break
return out
:ような新しい機能を作成することによって、
の可能性のある重複した[ファジーマッチがPythonのパンダと合併行うには、それは可能ですか?](https://stackoverflow.com/questions/13636848/is-it-possible-to-do -fuzzy-match-merge-with-python-pandas) –
結果が – piRSquared
であると期待していただければ幸いです。ファジーマッチプロポーザルはここには当てはまらないようです。私はcategories.Pattern値を使用して、通常はstr.containsのように使用しますが、categories.Categoryの値が一致すればそれを返します。 –