2017-02-02 20 views
0

次の問題のほうが助けになります。私はこの問題を解決するためにPandasライブラリを使用しようとしていますので、もし可能ならPandasを使ってこれをどうやって行うことができるか説明できれば分かります。 )Python PandasでExcelのVLOOKUPを複製する

  • 1パンダのデータフレーム
  • 2にファイル '前')を探しに変換:

    Before

    と:

    は、私は、次のExcelファイルを取りたいです'Site'列のテキスト。このテキストが 'Domain'列の文字列内に表示されている場合は、 'Owner'列の値を 'Output'の下に戻します。

  • 3)結果は 'After'ファイルのようになります。私はこれをCSV形式に変換したいと思います。

After

だから、基本的にこれは、私たちが「サイト」と「ドメイン」の列の間を探しているのではない完全一致を除き、エクセルVLOOKUP運動に似ています。

私はすでにExcelでこれを試みていますが、100,000行以上を探していて、1000以上のサイトと比較しています。

私は、 'Owner'で分類したいドメインのリストと同じファイルにルックアップリストを保存しようとしました。ルックアップリストを別々のデータフレームに格納するなど、これを行うより良い方法があれば、それは問題ありません。

ご協力いただきありがとうございます。本当にありがとうございます。

コリン・

+1

可能な重複:http://stackoverflow.com/questions/38291908/excel-vlookup-equivalent-in-pandas –

+1

[vandup in pandas in join]の可能な複製(http://stackoverflow.com/questions/25493625)/vlookup-in-pandas-using-join) – Boud

答えて

0

私はOPの質問は、データフレームの間の正確な検索(map)または検索を扱うのいずれかのコメントにリンクソリューションとは多少異なり思います。ここには単一のデータフレームと部分一致があります。

import pandas as pd 
import numpy as np 

df = pd.ExcelFile('data.xlsx').parse(0) 
df = df.astype(str) 
df['Test'] = df.apply(lambda x: x['Site'] in x['Domain'],axis=1) 
df['Output'] = np.where(df['Test']==True, df['Owner'], '') 
df 

lambdain試験の繰り返しがTestでブール値を返すために、軸の両端に印加されることを可能にします。これは、Ownerを検索し、Outputに配置するためのルールとして機能します。

+0

ありがとうございましたjoshi123。私は上記を試して、私のより大きなデータセットに 'Output'カラムが入っていません。私は間違っている可能性がありますが、私は(同じ行に) 'ドメイン'列内の 'サイト'文字列を検索し、TRUEの場合は列内の文字列を返します'オーナー'。しかし、私がしたいことは、最初の行の 'domain'文字列を見て、次に 'Site'列のすべての文字列をスキャンし、部分一致を探します。これを達成するために上記を修正できますか?ありがとう –

+0

私はデータのダミーの抜粋でそれを追加する必要があります、私はおそらく、同じ行に表示される 'ドメイン'に部分的に一致する 'サイト'を持つことによって問題を単純化しました。 –