Reputation: 111
I have a list of zipcodes that i want to extract from a geopandas dataframe. I am successfully able to detect the rows with the list of zipcodes (rfp) but are unable to create new geopandas DataFrame with just the new rows copied over.
I tried append, iloc
Is there a simpler way to get this done?
i =0
while i < len(rfp):
for index, row in countries.iterrows():
if rfp[i] == row['CFSAUID']:
#print(index, row)
print(index, row['CFSAUID'], countries.iloc[index])
#data=data.append[countries.iloc[index]]
#print(rfp[i])
i = i + 1
data.head()
Upvotes: 1
Views: 386
Reputation: 31226
loc[]
import geopandas as gpd
gdf = gpd.read_file("https://www2.census.gov/geo/tiger/TIGER2021/ZCTA520/tl_2021_us_zcta520.zip")
zipcode = ['41714', '47994', '40502', '46550', '46385', '46731', '46170',
'40071', '46049', '46985', '46256', '41603', '40511', '41005',
'46808', '41006', '47338', '46118', '40003', '41179']
gdf2 = gdf.loc[gdf["ZCTA5CE20"].isin(zipcode)].copy()
gdf2["geometry"] = gdf2["geometry"].centroid
gdf2
ZCTA5CE20 | GEOID20 | CLASSFP20 | MTFCC20 | FUNCSTAT20 | ALAND20 | AWATER20 | INTPTLAT20 | INTPTLON20 | geometry | |
---|---|---|---|---|---|---|---|---|---|---|
17 | 46118 | 46118 | B5 | G6350 | S | 141161691 | 408941 | 39.6587 | -86.5313 | POINT (-86.52394789855478 39.65319687881211) |
19 | 46256 | 46256 | B5 | G6350 | S | 28865547 | 2051373 | 39.9084 | -86.0131 | POINT (-86.0114959356422 39.90683668248156) |
36 | 46731 | 46731 | B5 | G6350 | S | 40833756 | 74360 | 40.7935 | -85.0996 | POINT (-85.10270347937339 40.79753662311887) |
66 | 46985 | 46985 | B5 | G6350 | S | 170789205 | 115396 | 40.9595 | -86.5805 | POINT (-86.58222146640128 40.95485185925257) |
67 | 47994 | 47994 | B5 | G6350 | S | 56334635 | 0 | 40.1823 | -87.0823 | POINT (-87.0823111593409 40.18233088778645) |
75 | 40071 | 40071 | B5 | G6350 | S | 314120461 | 3703551 | 38.0429 | -85.3788 | POINT (-85.37070453567415 38.04328301537532) |
76 | 41005 | 41005 | B5 | G6350 | S | 135617739 | 97008 | 39.0068 | -84.7601 | POINT (-84.7653976667778 39.00706909605251) |
81 | 40511 | 40511 | B5 | G6350 | S | 222838540 | 808726 | 38.141 | -84.4616 | POINT (-84.47394279725246 38.13277356826288) |
83 | 40502 | 40502 | B5 | G6350 | S | 18509366 | 699624 | 38.011 | -84.4832 | POINT (-84.48188158114969 38.01371604197583) |
86 | 40003 | 40003 | B5 | G6350 | S | 112166630 | 1151993 | 38.2767 | -85.0438 | POINT (-85.04368804019533 38.26863127746849) |
92 | 41006 | 41006 | B5 | G6350 | S | 143721210 | 2283721 | 38.7844 | -84.3456 | POINT (-84.34296186884575 38.78473023614392) |
100 | 41179 | 41179 | B5 | G6350 | S | 877946552 | 2573419 | 38.535 | -83.3701 | POINT (-83.38987423897763 38.52484654452977) |
108 | 41603 | 41603 | B5 | G6350 | S | 36349511 | 116254 | 37.5715 | -82.7046 | POINT (-82.68704929399041 37.55933118794476) |
140 | 41714 | 41714 | B5 | G6350 | S | 31218191 | 51291 | 37.1632 | -83.5058 | POINT (-83.50751835227443 37.16518559160255) |
142 | 46385 | 46385 | B5 | G6350 | S | 209128553 | 1458064 | 41.4644 | -87.1241 | POINT (-87.12395316038518 41.46394402403933) |
146 | 46550 | 46550 | B5 | G6350 | S | 185523489 | 140699 | 41.4469 | -86.0006 | POINT (-86.00026862329979 41.4470028890462) |
156 | 46049 | 46049 | B5 | G6350 | S | 67941709 | 6187 | 40.295 | -86.2218 | POINT (-86.22160670624778 40.29760037111507) |
163 | 46808 | 46808 | B5 | G6350 | S | 27442493 | 192647 | 41.0978 | -85.1771 | POINT (-85.17619884243086 41.0988556047745) |
176 | 47338 | 47338 | B5 | G6350 | S | 77579648 | 653392 | 40.3424 | -85.3374 | POINT (-85.33974232857304 40.34362126071514) |
188 | 46170 | 46170 | B5 | G6350 | S | 521838 | 0 | 39.5716 | -86.8627 | POINT (-86.86265114552866 39.57162423401216) |
Upvotes: 1