英文:
How to iterate through a list for element of URL generation
问题
当我打印URL时,我得到了列表中的所有元素,而不是我希望的单独的月份:
https://api.census.gov/data/2023/cps/basic/['may', 'apr', 'mar', 'feb', 'jan']?get=NAME, HEFAMINC &for=county:*&in=state:12
。
我仍在学习Python,所以非常感谢任何帮助!
英文:
I am trying to grab data of census.gov - I would like to run a for loop that rotates through a list of months given, per the API syntax guide.
> # API endpoint and parameters - current pop surveys
base_url = 'https://api.census.gov/data'
year = '2023' # Latest year of data
dataset = 'cps/basic/' # Population and Housing estimates dataset
months = ['may', 'apr', 'mar', 'feb', 'jan'],
get_variables = 'NAME, HEFAMINC ' # Variables aka the column headers
state = '12' # Specify the state code for Florida
county = "*"
# List to store individual data frames
data_frames = []
# Construct the API request URL using an f-string and a for loop to cycle months for 2023
for month in months:
url = f'{base_url}/{year}/{dataset}{month}?get={get_variables}&for=county:{county}&in=state:{state}'
print(url)
# Send the API request
response = requests.get(url)
# Check if the request was successful, otherwise print error message
if response.status_code == 200:
# Parse the JSON response
data = response.json()
# Extract the desired information
headers = data[0] # Column headers
values = data[1:] # Data values
# Create a data frame
df = pd.DataFrame(values, columns=headers)
# Append the data frame to the list
data_frames.append(df)
else:
print(f'Request failed with status code: {response.status_code}')
# Analyze the individual data frames further
When I print the URL, I am getting all elements of the list showing up, not the individual month as I had hoped:
https://api.census.gov/data/2023/cps/basic/['may', 'apr', 'mar', 'feb', 'jan']?get=NAME, HEFAMINC &for=county:*&in=state:12
.
I am still learning Python, so any help is greatly appreciated!
答案1
得分: 1
这是行尾的逗号:
months = ['may', 'apr', 'mar', 'feb', 'jan'],
它使months
成为一个元组,如果打印months
,你会看到:
(['may', 'apr', 'mar', 'feb', 'jan'],)
这使得months
的第一个且唯一的元素成为一个列表['may', 'apr', 'mar', 'feb', 'jan']
。
去掉逗号,问题就会解决。
英文:
It's the comma in the end of the line:
months = ['may', 'apr', 'mar', 'feb', 'jan'],
It makes months
a tuple, you can see it if you print months
:
(['may', 'apr', 'mar', 'feb', 'jan'],)
Which makes the first and only element of months
a list ['may', 'apr', 'mar', 'feb', 'jan']
.
Get rid of the comma and the problem will be solved.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论