python - 访问 pandas 数据框列中列表中字典的值

标签 python pandas

我在 pandas 数据框中有一列,其中每一行都是一个列表,里面有一个字典,如下所示:

urls
---------------------------------------------------------
[{'url': http://t.co, 'expanded_url':http://nytimes.com}]
[{'url': http://t.co, 'expanded_url':http://time.com}] 
[]

某些行只有空列表。 因此,我尝试仅提取 Expanded_url 的值,当我在测试列表上测试以下函数时,我能够做到这一点:

test_list = [{'url': 'https://t.co', 'expanded_url': 'https://nytimes.com'}]

def get_expanded_url(outterlist):
    for item in outterlist:
        if isinstance(item, dict):
            return item['expanded_url']
        else:
            return None

但是,当我将其应用于数据框中的列时,如下所示:

df.urls.apply(lambda x: get_expanded_url(x))

我只得到 NaN,即使在我不应该得到的地方(不只是一个空列表)。首先,有人可以解释为什么我的函数不能在数据框上运行吗?其次,如何从列中提取 Expand_url 的值?

最佳答案

你可以试试这个:

def get_expanded_url(outterlist):
    try:
        return outterlist[0]['expanded_url']
    except IndexError:
        return None

df.urls.apply(get_expanded_url)

该函数将尝试获取您想要的 url。如果不能,它将返回None

此外,当使用apply时,您可以只给出函数的名称。不需要创建 lambda 函数。

关于python - 访问 pandas 数据框列中列表中字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563719/

相关文章:

python - 将 pandas 中的列与自身进行比较

python - 使用来自另一个 DataFrame 的文本选择 Pandas DataFrame

python - 如何在 swig & python 中为没有默认构造函数的 std::pair<> 创建接口(interface)?

python - 如何处理 Pandas Data Frame 中的重复条目?

python - SQLAlchemy 查找错误 : "DIVERSE" is not among the defined enum values

python - 在 pandas 中传播缺失日期的值

python - aiohttp 优于 pycurl multi,因为 python 有 gil,切换到 aiohttp 可以获得什么好处?

python - 将 Django 模型验证错误传输到表单的惯用方法

python - 如何快速比较两个文本文件并获得唯一的行?

python - 即使没有数据可以填充它们,也要在最终的 GroupBy 中保留空的 bin/bucket