0

我使用人口普查包装器从人口普查 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)

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

4

2 回答 2

1

目前尚不清楚您的数据是什么样的。我猜您有一个标量列,并且您想使用列表过滤该列。如果这是问题,那么您可以使用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)]
于 2019-08-31T21:17:27.803 回答
0

示例数据不是很清楚,所以下面是如何使用要过滤的值列表来过滤列上的数据框

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
于 2019-08-31T20:58:04.747 回答