2016-11-01 6 views
1

DataFrameでIPアドレスを使用して関数を適用しようとしています。アイデアは、df [IP]列のすべてのIPを調べ、国をdf ['Country']列に戻すことです。データフレーム内のセルで関数を使用する

import geoip 
import pandas as pd 

def country_lookup(IP): 
    return geoip.country(IP) 

df = pd.DataFrame({'IP':['99.11.100.60','99.16.198.20','99.88.55.4'], 
'Country':['na','na','na']}) 

Attempted Solution 1 
df['Country'] = df['IP'].apply(country_lookup) 

Attempted Solution 2 
for i in df['IP']: 
    df['Country'] = country_lookup(i) 

両方の試みがすべての行に対して同じ国コードを返しました。

私はプログラミングの初心者であり、解決策を見つけることができませんでした。

+2

で試してみてください、そうでない言語のように物事をタグ付けしないでください。これは明らかにPythonでありRではありません。 –

+0

[この質問](http://stackoverflow.com/questions/40211314/pandas-fastest-way-to-resolve-ip-to-country)にチェックを入れたい場合があります – MaxU

答えて

1

は、将来のためにラムダ

df['Country'] = df['IP'].apply(lambda x: country_lookup(x)) 
+0

ありがとう私の例のために働いていますが、私のプログラムではエラーに遭遇しています。 IndexError:何を見るべきかについての提案を範囲外のタプルインデックス。私のデータフレームを印刷するとき、すべてが正しいように見えます。 – Revision30

+0

問題を確認するには、データフレーム全体が必要です。エラーだけでそれはかなり難しいと伝えます –

+0

私はこれを考え出したかもしれません。私はSQLデータベースから読んでいるし、私はインデックスの列がありません。 – Revision30

関連する問題