如何使用创建的zipcodes列表过滤普查数据(来自API)?

2024-04-24 00:31:53 发布

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

我使用普查包装器从普查api中提取数据,我想用我编译的zips列表过滤掉这些数据。你知道吗

所以我试图从人口普查的pull请求数据中过滤数据。我有一个csv文件的压缩我想使用,我已经把它放到一个列表中。我试过一些方法,比如把人口普查放在一个数据框中,试着用我的列表过滤zipcode列,但我认为我的语法不正确。你知道吗

这只是我提取的测试数据

census_data = c.acs5.get(('NAME', 'B25034_010E'),
           {'for': 'zip code tabulation area:*'})
census_pd = census_pd.rename(columns={"NAME": "Name", "zip code tabulation area": "Zipcode"})

censusfilter = census_pd['Zipcode'==ziplst]

所以我尝试了这种方法,还尝试了一个for循环,在这里我使用census\u pd['Zipcode']和一个内部for循环,用一个if语句(比如zip1==zip2 append)遍历列表。你知道吗

我的依赖

# Dependencies

import pandas as pd
import requests
import json
import pprint
import numpy as np
import matplotlib.pyplot as plt
import requests
from census import Census
import gmaps
from us import states

# Census & gmaps API Keys
from config import (api_key, gkey)
c = Census(api_key, year=2013)

# Configure gmaps
gmaps.configure(api_key=gkey)

如前所述,我想过滤掉我可能从人口普查数据中提取的任何数据,这些数据特定于我使用的zipcodes


Tags: 数据方法keyfromimportapi列表for
2条回答

不清楚你的数据是什么样子的。我猜您有一个标量列,并且希望使用列表过滤该列。如果是这个问题,那么您可以使用isin内置方法来过滤数据帧。你知道吗

import pandas as pd

data = {'col': [2, 3, 4], 'col2': [1, 2, 3], 'col3': ["asd", "ads", "asdf"]}
df = pd.DataFrame.from_dict(data)
random_list = ["asd", "ads"]

df_filtered = df[df["col3"].isin(random_list)]

示例数据不是很清楚,因此下面是如何使用要筛选的值列表筛选列上的数据帧

import pandas as pd
from io import StringIO

# Example data
df = pd.read_csv(StringIO(
'''zip,some_column
"01234",A1
"01234",A2
"01235",A3
"01236",B1
'''), dtype = {"zip": str})

zips_list = ["01234", "01235"]

# using a join
zips_df = pd.DataFrame({"zip": zips_list})
df1 = df.merge(zips_df, how='inner', on='zip')
print(df1)

# using query
df2 = df.query('zip in @zips_list')
print(df2)


# using an index
df.set_index("zip", inplace=True)
df3=df.loc[zips_list]
print(df3)

所有情况下的输出:

     zip some_column
0  01234          A1
1  01234          A2
2  01235          A3

相关问题 更多 >