我的数据框如下所示:
City State Country
Chicago IL United States
Boston
San Diego CA United States
Los Angeles CA United States
San Francisco
Sacramento
Vancouver BC Canada
Toronto
我有3个值列表可以填写None单元格:
city = ['Boston', 'San Francisco', 'Sacramento', 'Toronto']
state = ['MA', 'CA', 'CA', 'ON']
country = ['United States', 'United States', 'United States', 'Canada']
这些列表中元素的顺序相互对应。因此,所有3个列表中的第一个项目彼此匹配,依此类推。如何填写空单元格并生成如下结果?
City State Country
Chicago IL United States
Boston MA United States
San Diego CA United States
Los Angeles CA United States
San Francisco CA United States
Sacramento CA United States
Vancouver BC Canada
Toronto ON Canada
我的代码给了我一个错误,我被卡住了。
if df.loc[df['City'] == 'Boston']:
'State' = 'MA'
欢迎任何解决方案。谢谢。
答案 0 :(得分:2)
创建两个映射,一个用于<city : state>
,另一个用于<city : country>
。
city_map = dict(zip(city, state))
country_map = dict(zip(city, country))
接下来,将City
设置为索引 -
df = df.set_index('City')
最后,使用map
/ replace
将键转换为适当的值 -
df['State'] = df['City'].map(city_map)
df['Country'] = df['City'].map(country_map)
作为额外的最后一步,您最后可以致电df.reset_index()
。