从数据帧获取特定数据值

2024-10-01 15:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用pandas的Python数据帧。它有两列,分别称为“衰减纬度”和“拾取纬度”。我想做一个函数,根据这两个变量创建第三列(通过api运行它们)。你知道吗

所以我写了一个函数:

def dropoff_info(row):
    dropoff_latitude = row['dropoff_latitude']
    dropoff_longitude = row['dropoff_longitude']
    dropoff_url2 = "http://data.fcc.gov/api/block/find?format=json&latitude=%s&longitude=%s&showall=true" %(dropoff_latitude,dropoff_longitude)
    dropoff_resp2 = requests.get(dropoff_url2)
    dropoff_results2 = json.loads(dropoff_resp2.text)
    dropoffinfo =  dropoff_results2["Block"]["FIPS"][2:11]
    return dropoffinfo

那我就把它当作 df['newcolumn']=dropoffinfo(df)

但是它不起作用。你知道吗

排除故障后,我发现当我打印dropoff\u latitude时,它如下所示:

0     40.773345947265625
1     40.762149810791016
2     40.770393371582031
...

所以我认为URL不能被生成。我想让dropoff\u latitude在打印时看起来像这样:

40.773345947265625
40.762149810791016
40.770393371582031
...

我也不知道如何具体说明我只需要实际的内容部分。你知道吗

当我试着

dropoff_latitude = row['dropoff_latitude'][1]
dropoff_longitude = row['dropoff_longitude'][1]

它只是给了我第一行的值,所以这显然不起作用。你知道吗

有什么想法吗?我对使用数据帧非常陌生。。。谢谢您!你知道吗


Tags: 数据函数apijsonpandasdfrowdropoff
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:54

Alex-对于pandas,我们通常喜欢避免循环,但是在您的特定情况下,ping远程服务器获取数据的需要非常需要它。所以我会做如下的事情:

l = []
for i in df.index:
    dropoff_latitude = df.loc[i, 'dropoff_latitude']
    dropoff_longitude = df.loc[i, 'dropoff_longitude']
    dropoff_url2 = "http://data.fcc.gov/api/block/find?format=json&latitude=%s&longitude=%s&showall=true" %(dropoff_latitude,dropoff_longitude)
    dropoff_resp2 = requests.get(dropoff_url2)
    dropoff_results2 = json.loads(dropoff_resp2.text)
    l.append(dropoff_results2["Block"]["FIPS"][2:11])

df['new'] = l

这里的关键是.loc[i, ...]位,它使您能够逐个遍历每一行,并调用相关列来创建要发送到API的变量。你知道吗

关于你关于内存消耗的问题-这比我的工资级别高了一点,但我真的认为在这种情况下你没有其他选择(除非你的API有某种批处理请求,允许你在一次调用中提取更大的数据集)。你知道吗

相关问题 更多 >

    热门问题