簡體   English   中英

根據字典鍵向熊貓數據框添加一列

[英]adding a column to a pandas dataframe, based on dictionary key

我有以下數據框:

id  ip  
1   219.237.42.155
2   75.74.144.120
3   219.237.42.155

通過使用maxmindb-geolite2軟件包,我可以找出特定ip分配給哪個城市。 如下代碼:

from geolite2 import geolite2
reader = geolite2.reader()
reader.get('219.237.42.155')

將返回一個字典,然后通過查找鍵,我實際上可以獲得一個城市名稱:

reader.get('219.237.42.155')['city']['names']['en']

收益:

'Beijing'

我的問題是我不知道如何獲取數據框中每個IP的城市並將其放在第三列中,因此結果將是:

id  ip              city
1   219.237.42.155  Beijing
2   75.74.144.120   Hollywood
3   219.237.42.155  Beijing

我得到的最遠距離是通過使用代碼將整個字典映射到單獨的列:

df['city'] = df['ip'].apply(lambda x: reader.get(x))

另一方面:

df['city'] = df['ip'].apply(lambda x: reader.get(x)['city']['names']['en'])

拋出一個關鍵錯誤。我想念什么?

#you can use apply to check if the key exists before trying to access its values.
df.apply(lambda x: reader.get(x.ip,np.nan),axis=1).apply(lambda x: np.nan if pd.isnull(x) else x['city']['names']['en'])
Out[39]: 
0    Beijing
1        NaN
2    Beijing
dtype: object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM