簡體   English   中英

如何定義 function 以從嵌套字典中提取 python 中每一行的值

[英]How do I define a function to extract values from nested dictionary for each row in python

我在 dataframe 'df' 中有一個名為 'urls' 的列,每一行都包含嵌套字典和 URL 以及它是否是惡意的。 我只想為每一行提取嵌套字典的值。

0    {'url example 1': {'malicious': False}}
1    {'url example 2': {'malicious': False}}  

通過定義 function,我想使用“應用”function 來獲得每一行的結果。

這是我定義的示例 function。

def urlconcern(url):
    try:
        r = s.lookup_urls([url]) 
        return r.values()
    except:
        pass

使用“應用”運行此 function

df['urls'].apply(urlconcern)

這只給出了下面帶有圓括號的結果(奇怪)

0    ({'malicious': False})
1    ({'malicious': False})

期望的答案是

False
False

有什么辦法可以做到嗎?

給定 pandas 系列s我假設它是 pandas 系列)

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))

Output:

0    False
1    False
dtype: bool

但是,我不相信這是您正在尋找的東西,因為您在這里丟失了 url 信息。

這是 pandas dataframe 嗎? 你實例化了嗎? 您可能想看看這本字典是如何構造的,因為它應該更像

>>> 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 的標准方式,應該有助於您以后的工作流程。

暫無
暫無

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

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