如何使用创建的邮政编码列表过滤人口普查数据(来自API)?



我使用人口普查包装器从人口普查 api 中提取数据,我想用我编译的 zip 列表过滤掉这些数据。

所以我正在尝试从人口普查的拉取请求数据中过滤数据。我有一个我想使用的zip的csv文件,我已经把它放进了一个列表中。我已经尝试了一些事情,例如将人口普查放在数据框中并尝试按我的列表过滤邮政编码列,但我认为我的语法不正确。

这只是我提取的测试数据,

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_pd['Zipcode'] 和一个内部 for 循环来迭代列表,并附加一个 if 语句,如 zip1 == zip2 附加到列表中。

我的依赖关系

# 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)

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

目前尚不清楚您的数据是什么样子的。我猜你有一个标量列,你想使用列表过滤该列。如果是问题,则可以使用内置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

最新更新