将值映射到键

时间:2020-02-17 11:21:07

标签: python dictionary mapping

我有一个带有“状态”列的数据框,该列表示每个记录的状态。我想将州映射到区域,并创建了一个字典:

     di = {'Mideast': ['DL', 'DC', 'MD', 'NJ', 'NY', 'PA'], 'West': [ . . , . .], . . . } 

使用诸如

之类的变量构建
    Mideast = ['DL', 'DC', 'MD', 'NJ', 'NY', 'PA']

为什么这样的天真方法不起作用?

    for i in df_test['State']:
        if i in Mideast: i = 'Mideast';

df中的样本值:

State   Area Code    Phone    Intl Calls  Intl Charge  CustServ Calls   Churn?
KS       415        382-4657       3          2.7           1           False.

我已经在线搜索了可能的解决方案。我正在尝试它们,但令我感到困惑的是,上面的方法似乎超出了范围,甚至没人提到它。我显然不了解非常基本的内容,但我不知道它是什么。

2 个答案:

答案 0 :(得分:1)

尝试一下:

import pandas as pd

di = {'Wonderful spam': ['Spam', 'Egg', 'Sausage'], 'Lovely spam': ['Baked beans', 'Tomato']}

df_test = pd.DataFrame(["Tomato"],columns=["State"])

for i, x in enumerate(df_test['State']):
    for group, names in di.items():
        if x in names:
            df_test['State'][i] = group

print(df_test)

输出:

         State
0  Lovely spam

答案 1 :(得分:0)

尝试一下:

di = {'Mideast': ['DL', 'DC', 'MD', 'NJ', 'NY', 'PA'], 'West': [ . . , . .], . . . }

mod_dict = {v:k for k,val in di.iteritems() for v in val}

for k,v in mod_dict.iteritems():

    df_test.loc[df_test['States'] = k, 'States'] = v   

我已将格式为

的初始di转换为mod_dict
 'DC': 'Mideast',
 'DL': 'Mideast',
 'MD': 'Mideast',
 'NJ': 'Mideast',
 'NY': 'Mideast',
 'PA': 'Mideast'}
 .
 . 
 .

现在,我正在寻找df中的每个国家/地区代码,如果找到了,请用区域名称将该代码替换为该国家/地区的代码。

希望这会有所帮助。

相关问题