我有一个带有“状态”列的数据框,该列表示每个记录的状态。我想将州映射到区域,并创建了一个字典:
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.
我已经在线搜索了可能的解决方案。我正在尝试它们,但令我感到困惑的是,上面的方法似乎超出了范围,甚至没人提到它。我显然不了解非常基本的内容,但我不知道它是什么。
答案 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
中的每个国家/地区代码,如果找到了,请用区域名称将该代码替换为该国家/地区的代码。
希望这会有所帮助。