我目前运行以下脚本,该脚本使用Fuzzylogic替换列表中的一些常用词。数据框df1
包含可能值的默认列表。数据框df2
是在引用Dataframe df1
之后进行转换/更改的主要数据框。代码如下:
df1 = pd.DataFrame(['one','two','three','four','five','tsst'])
df2 = pd.DataFrame({'not_shifted':[np.nan,'one','too','three','fours','five','six',np.nan,'test']})
# Drop nan value
df2=pd.DataFrame(df2['not_shifted'].fillna(value=''))
df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1[0]))
问题是输出是一个包含方括号的数据框。更糟糕的是,df2['not_shifted']
中的任何文本都没有可见/可重新标记:
Out[421]:
not_shifted
0 []
1 [one]
2 [two]
3 [three]
4 [four]
5 [five]
6 []
7 []
8 [tsst]
请帮忙。
答案 0 :(得分:1)
df2.not_shifted.apply(lambda x: x[0] if len(x) != 0 else "")
或简称df2.not_shifted.str[0]
答案 1 :(得分:0)
def replace_all(eg):
rep = {"[":"",
"]":"",
"u":"",
"}":"",
"'":"",
'"':"",
"frozenset":""}
for i,j in rep.items():
eg = eg.replace(i,j)
return eg
for each in df.columns:
df[each] = df[each].apply(lambda x : replace_all(str(x)))