我在dataframe 'df‘中有一个名为’URL‘的列,每一行都由带有URL的嵌套字典组成,并且它是否是恶意的。我只想为每一行提取嵌套字典的值。
0 {'url example 1': {'malicious': False}}
1 {'url example 2': {'malicious': False}} 通过定义一个函数,我希望使用'apply‘函数来获得每一行的结果。
下面是我定义的示例函数。
def urlconcern(url):
try:
r = s.lookup_urls([url])
return r.values()
except:
pass在使用“apply”函数运行此函数之后
df['urls'].apply(urlconcern)这只给出下面的结果与圆括号(奇怪)
0 ({'malicious': False})
1 ({'malicious': False})想要的答案是
False
False是否有办法这样做?
发布于 2022-01-20 05:38:38
给熊猫系列s (我假设这是熊猫系列)
s = pd.Series([{'url example 1': {'malicious': False}},
{'url example 2': {'malicious': False}}])您可以在next中使用生成器表达式来查找嵌套dicts的值。
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然而,我不相信这是你想要的,因为你在这里失去了网址信息。
发布于 2022-01-20 05:45:58
这是熊猫的资料吗?你实例化了吗?您可能想看看这本字典是如何构造的,因为它应该更像
>>> 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://stackoverflow.com/questions/70781193
复制相似问题