我有一个数据框架,我正在尝试将一个列值Map到集合中的值。
Dataframe 为
Name CallType Location
ABC IN SFO
DEF OUT LHR
PQR INCOMING AMS
XYZ OUTGOING BOM
TYR A_IN DEL
OMN A_OUT DXB
我有一个常量列表,其中调用类型将被列表中的替换
call_type = set("IN","OUT")
所需 Dataframe
Name CallType Location
ABC IN SFO
DEF OUT LHR
PQR IN AMS
XYZ OUT BOM
TYR IN DEL
OMN OUT DXB
我写代码是为了检查响应,但检查过程。extractOne有时为OUTGOING给出IN(这是错误的),有时为OUNGOING给出OUT(这是正确的)
这是我的密码
data=[('ABC','IN','SFO),
('DEF','OUT','LHR),
('PQR','INCOMING','AMS),
('XYZ','OUTGOING','BOM),
('TYR','A_IN','DEL),
('OMN','A_OUT','DXB)]
df = pd.DataFrame(data,
columns =['Name', 'CallType',
'Location'])
call_types=set(['IN','OUT'])
df['Call Type'] = df['Call Type'].apply(lambda x: process.extractOne(x, list(call_types))[0])
total_rows=len(df)
for row_no in range(total_rows):
row=df.iloc[row_no]
print(row) // Here Sometimes OUTGOING sets as OUT and Sometimes IN . Shouldn't the result be consistent ?
我不确定是否有更好的方法。如果我遗漏了什么,有人能提出建议吗。
2条答案
按热度按时间8zzbczxx1#
看起来
Series.str.extract
非常适合:或者,如果要显式使用
call_types
,可以执行以下操作:whitzsjs2#
一种可能的解决方案是使用
difflib.get_close_matches
:输出:
另一种可能的解决方案:
输出: