我有一个元组列表,该元组的第一个元素由一个城市名和一个州名组成,用逗号分隔,第二个元素包含县名:
print(county_lookup)
[('Normal,Alabama', 'Madison County'), ('Birmingham,Alabama', 'Jefferson County'), ('Montgomery,Alabama', 'Montgomery County'), ('Huntsville,Alabama', 'Madison County'), ('Tuscaloosa,Alabama', 'Tuscaloosa County'), ('Alexander City,Alabama', 'Tallapoosa County'), ('Athens,Alabama', 'Limestone County')]
我希望能够使用这个列表来使用已经存在的元组列表中的值,在预先存在的“县”数据中创建一个新列。
df_schools['county'] = a=[x[n] for x in county_lookup]
但是,我很快意识到df_schools已经有了一个city_state列,其中包含的值类似于list county_lookup的每个元组的第一个元素。
df_schools.city.city_state
0 Normal,Alabama
1 Birmingham,Alabama
2 Montgomery,Alabama
3 Huntsville,Alabama
4 Montgomery,Alabama
...
7698 Overland Park,Kansas
7699 Highland Heights,Ohio
7700 San Jose,California
7701 Lancaster,California
7702 San Antonio,Texas
我希望问一问,是否可以将列表中每个元组的第一个元素与df_schools dataframe中的城市状态列进行比较,以便创建一个新的列“county”,并从country_lookup列表中的每个元组的第二个元素中获得相应的信息。
发布于 2022-03-01 11:24:40
您可以使用pd.merge
函数:
df = pd.DataFrame(county_lookup, columns=['city_state', 'county'])
df_schools = df_schools.merge(df, how='left', on='city_state')
现在,df_schools
有了一个新的“县”列(如果查找不成功,该列可能有空值)。
发布于 2022-03-01 11:27:31
您可以将其转换为dict并将其映射到列/系列中:
df['city_state'].map(dict(country_lookup))
https://stackoverflow.com/questions/71313511
复制相似问题