我在資料框“df”中有一個名為“urls”的列,每一行都包含帶有 URL 的嵌套字典,以及它是否是惡意的。我只想為每一行提取嵌套字典的值。
0 {'url example 1': {'malicious': False}}
1 {'url example 2': {'malicious': False}}
通過定義一個函式,我想使用“應用”函式來獲取每一行的結果。
這是我定義的示例函式。
def urlconcern(url):
try:
r = s.lookup_urls([url])
return r.values()
except:
pass
使用“應用”功能運行此程式后
df['urls'].apply(urlconcern)
這只給出了下面帶有圓括號的結果(奇怪)
0 ({'malicious': False})
1 ({'malicious': False})
期望的答案是
False
False
有什么辦法可以做到嗎?
uj5u.com熱心網友回復:
給定熊貓系列s(我假設它是熊貓系列)
s = pd.Series([{'url example 1': {'malicious': False}},
{'url example 2': {'malicious': False}}])
您可以在內部使用生成器運算式next來查找嵌套字典的值。
out = s.apply(lambda url: next((v for d in url.values() for k,v in d.items()), None))
輸出:
0 False
1 False
dtype: bool
但是,我不相信這是您正在尋找的,因為您在這里丟失了 url 資訊。
uj5u.com熱心網友回復:
這是熊貓資料框嗎?你實體化了嗎?您可能想看看這本字典是如何構造的,因為它應該更像
>>> df = {'url':['url example 1', 'url example 2', 'url example 3'], 'malicious': [False, False, True]}
>>> df = pd.DataFrame(df)
>>> df
url malicious
0 url example 1 False
1 url example 2 False
2 url example 3 True
然后做
>>> df[df['malicious'] == False]
url malicious
0 url example 1 False
1 url example 2 False
我知道這并不能準確回答您的問題,但它是使用 DataFrames 的標準方式,應該有助于您以后的作業流程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418716.html
標籤:
下一篇:Python回傳最大字典條目
