使用值列表填写空单元格

时间:2018-03-26 18:52:17

标签: python pandas

我的数据框如下所示:

         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'

欢迎任何解决方案。谢谢。

1 个答案:

答案 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()