python - 应用函数导致列表索引超出范围

标签 python json pandas apply

我正在尝试修改整列值,但我一直遇到列表超出范围的问题。这是我的整个代码:

# Libraries
import json, requests
import pandas as pd
from pandas.io.json import json_normalize

# Set URL
url = 'https://api-v2.themuse.com/jobs'

# For loop to extract data
for i in range(100):
    data = json.loads(requests.get(
        url=url,
        params={'page': i}
    ).text)['results']

# JSON to PANDAS
data_norm = pd.read_json(json.dumps(data))

# Modify two columns' values
data_norm.locations = data_norm.locations.apply(lambda x: [{x[0]['name']}])
data_norm.publication_date = pd.to_datetime(data_norm.publication_date)

这里的问题是当我使用该函数时

data_norm.locations = data_norm.locations.apply(lambda x: [{x[0]['name']}]) 

我收到以下错误:

IndexError: list index out of range

理想情况下,我想更改 location 列:

0               [{'name': 'Seattle, WA'}]
1    [{'name': 'San Francisco Bay Area'}]
2             [{'name': 'Palo Alto, CA'}]
3                  [{'name': 'Reno, NV'}]
4                                      []
Name: locations, dtype: object

进入此:

0                     Seattle, WA
1          San Francisco Bay Area
2                   Palo Alto, CA
3                        Reno, NV
4                                      
Name: locations, dtype: object

最佳答案

data_norm.locations = data_norm.locations.apply(lambda x:
                                                [{x[0].get('name', '')}] 
                                                if len(x) > 0 else []
                                                )

请注意,这假设如果该条目至少包含一个元素,则第一个元素是字典。您的代码的问题在于您尝试访问空数组的第一个(索引 0)元素。

编辑

要根据您的评论删除 [{}]:

data_norm.locations = data_norm.locations.apply(lambda x:
                                                x[0].get('name', '') 
                                                if len(x) > 0 else ''
                                                )

关于python - 应用函数导致列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946703/

相关文章:

Python Pandas GroupBy 获取组列表

python - 从 C API 中的字符串表示创建对象

python - 基于类的 View - 未调用 get 函数

php - SQL 更新方法返回 JSONException

python - 消除 python 列表中的 n 个最高值

python - 图中轴矢量场的缩放颤动图

javascript - 如何读取从 ajax 返回的数据数组以获取 google 图表?

c# - Newtonsoft JSON - 数组未正确序列化

python - 在 panda 数据框中插入复选框

python - Pandas 根据行中其他单元格的值为单元格赋值