Exc*_*elp 4 python dictionary boolean dataframe pandas
我想在我的数据框中创建一个列,检查一列中的值是否是包含字典键的另一列的字典值,如下所示:
In [3]:
df = pd.DataFrame({'Model': ['Corolla', 'Civic', 'Accord', 'F-150'],
'Make': ['Toyota', 'Honda', 'Toyota', 'Ford']})
dic = {'Prius':'Toyota', 'Corolla':'Toyota', 'Civic':'Honda',
'Accord':'Honda', 'Odyssey':'Honda', 'F-150':'Ford',
'F-250':'Ford', 'F-350':'Ford'}
df
Out [3]:
Model Make
0 Corolla Toyota
1 Civic Honda
2 Accord Toyota
3 F-150 Ford
Run Code Online (Sandbox Code Playgroud)
在应用函数或其他任何函数后,我希望看到:
Out [10]:
Model Make match
0 Corolla Toyota TRUE
1 Civic Honda TRUE
2 Accord Toyota FALSE
3 F-150 Ford TRUE
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:我尝试创建一个传递元组的函数,这将是两列,但我不认为我正确传递参数:
def is_match(make, model):
try:
has_item = dic[make] == model
except KeyError:
has_item = False
return(has_item)
df[['Model', 'Make']].apply(is_match)
results in:
TypeError: ("is_match() missing 1 required positional
argument: 'model'", 'occurred at index Model')
Run Code Online (Sandbox Code Playgroud)
你可以用 map
df.assign(match=df.Model.map(dic).eq(df.Make))
Out[129]:
Make Model match
0 Toyota Corolla True
1 Honda Civic True
2 Toyota Accord False
3 Ford F-150 True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |